将列转换为Teradata行

时间:2017-03-17 16:39:59

标签: 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

这意味着,比我知道何时Code有NULL(在Code_1,Code_2,Code_3或Code_4级别之后,将其转换为最大级别的数据,其中我没有NULL)。

请帮帮我。 谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用多个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;