2017-03-17 3 views
0

Ich muss Spalten in Teradata ohne TD_UNPIVOT konvertieren. Mein TischKonvertieren von Spalten in Zeilen Teradata

ID |Code_1 | Code_2 | Code_3 | Code_4| 1 |1000 | 2000 | 3000 | 4000 | 1 |1000 | 2000 | 3000 | NULL | 1 |1000 | 2000 | NULL | NULL | 1 |1000 | NULL | NULL | NULL |

Ich brauche Code_1, Code_2, Code_3, Code_4 bis 2 Spalten konvertieren: erste Spalte alle CODE_n haben (ohne NULL), wird zweite Stufe der Codes haben:

ID | Code_n | Level_of_Code 
1 | 4000 | 4 
1 | 3000 | 3 
1 | 2000 | 2 
1 | 1000 | 1 

Es bedeutet, als ich wissen sollte, wenn Code NULL hat (in welcher Ebene Code_1, Code_2, Code_3 oder Code_4 und danach in Spalten mit Nummern der maximalen Ebene konvertieren, wo ich nicht NULL habe).

Bitte helfen Sie mir. Vielen Dank

+1

TD_UNPIVOT (http://www.info.teradata.com/HTMLPubs/DB_TTU_14_10/index.html#page/SQL_Reference/B035_1145_112A/Table_Operators.098.21.html), was Sie suchen. – Andrew

+0

Ich kann nicht td_unpivot verwenden, ich habe keine Rechte, es zu aktivieren – monika01

+0

Ugh, dann müssen Sie 'UNION' verwenden. 'SELECT ID, code_1, 1 als level_of_code von union select id, code_2 von ... order by 1, 3 desc'. – Andrew

Antwort

0

Sie können Zeilen erstellen, indem Sie mehrere SELECT-Anweisungen verwenden und eine Vereinigung durchführen, um sie miteinander zu verketten.

Select id, code_1 as "code_n", 1 as "level_of_code" from your table 
Union all 
Select id, code_2,2 
Union all 
Select id, code_3,3 
Union all 
Select id, code_4,4; 
+0

danke, es funktioniert :) – monika01

Verwandte Themen