将列转换为行 Teradata
Convert columns to rows Teradata
我需要在没有 TD_UNPIVOT 的情况下将 Teradata 中的列转换为行。我的 table
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
这意味着,我应该知道什么时候 Code 有 NULL(在 Code_1、Code_2、Code_3 或 Code_4 级别,然后将其转换为列我没有 NULL 的最大级别数)。
请帮助我。
谢谢
您可以通过使用多个 select 语句并执行 union 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;
我需要在没有 TD_UNPIVOT 的情况下将 Teradata 中的列转换为行。我的 table
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
这意味着,我应该知道什么时候 Code 有 NULL(在 Code_1、Code_2、Code_3 或 Code_4 级别,然后将其转换为列我没有 NULL 的最大级别数)。
请帮助我。 谢谢
您可以通过使用多个 select 语句并执行 union 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;