2017-03-17 8 views
0

TD_UNPIVOTなしでTeradataの列に変換する必要があります。私のテーブル列を行に変換する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 |

私は2列にCode_1、Code_2、Code_3、Code_4を変換する必要があります。最初の列は(NULLなし)すべてCode_nを持つことになり、二番目は、コードのレベルを持っています:

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

これは、CodeがNULL(Code_1、Code_2、Code_3、Code_4のいずれかのレベルで、それ以降はNULLでない最大レベルの数のカラムに変換する)のときに知っておくべきことです。

私を助けてください。 ありがとうございました

+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)あなたが探しているもの。 – Andrew

+0

私はtd_unpivotを使うことができません。私はそれを有効にする権利がありません。 – monika01

+0

うわー、あなたは 'UNION'を使う必要があります。 'SELECT ID、code_1、level_of_codeとして1をユニオンselect id、code_2 から順番に1,3 desc。 – Andrew

答えて

0

複数のselect文を使用して行を生成し、それらを連結するために共にallを実行します。

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

ありがとう、それは動作します:) – monika01