将列转置为行 - Teradata

时间:2016-09-22 11:24:40

标签: sql teradata

我有两张包含以下数据的表

TABLEA
TYPES   COLUMNA COLUMNB COLUMNC
DART    8.00     9.00   10.00

TABLEB
TYPES  DESCP    ACNT
DART  COLUMNA 14000
DART  COLUMNB 15000
DART  COLUMNC 16000

我的预期输出是

TYPES AMT   ACNT
DART 8.00  14000
DART 9.00  15000
DART 10.00 16000

我编写了以下代码来获取输出

 SELECT X.TYPES,
 CASE WHEN DESCP='COLUMNA' THEN COLUMNA
 WHEN DESCP='COLUMNB' THEN COLUMNB 
 WHEN DESCP='COLUMNC' THEN COLUMNC ELSE NULL END AMT,
 B.ACNT
 FROM  
 TABLEA X
 JOIN
 TABLEB Y
 ON  X.TYPES=Y.TYPES

这些只是样本数据,大约有10种类型,超过10列。除了编写包含所有列以实现此目的的case语句之外,还有其他选择吗?感谢

1 个答案:

答案 0 :(得分:0)

使用Teradata TD_UNPIVOT它的目的正是您所需要的。