2017-03-17 4 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 |

내가이 개 컬럼에 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 

코드가 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을 유니온 선택 id, code_2에서 ... 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