2017-03-17 192 views
0

我需要將列轉換爲Teradata中沒有TD_UNPIVOT的行。我的表將列轉換爲行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 |

我需要Code_1,CODE_2,CODE_3,Code_4轉換成2列:第一列將所有Code_n(不包括NULL),第二個將有代碼的級別:

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

這意味着,比我應該知道什麼時候代碼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,1作爲level_of_code從 union select id,code_2 from ... order by 1,3 desc'。 – Andrew

回答

0

您可以通過使用多個select語句生成行並進行聯合以將它們連接在一起。

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