Teradata中有没有一种方法可以将行转换为列而不更改对新值的查询

时间:2019-12-09 21:07:41

标签: dynamic teradata transpose

我正在寻求将行转换为列的要求,例如每年的销售总额。这样的表可以按如下方式转置:

Sales Year
100 2,005
200 2,005
300 2,006
100 2,007
200 2,006
300 2,007

'2005'  '2006'  '2007'
300     500       400

我使用的查询是

SELECT * FROM test1 PIVOT (SUM("s") FOR "y" IN ( '2005', '2006', '2007' ) ) AS Temp_pivot

但是,如果出现新的一年,例如2008,我需要修改查询。

是否可以在不修改查询的情况下获得其他年份的输出。没有过程或动态SQL就能做到吗?

最佳问候 无效

2 个答案:

答案 0 :(得分:0)

您似乎可以在IN子句中使用子查询,那么类似这样的事情:

SELECT * 
FROM test1 PIVOT (
  SUM("s") FOR "y" IN (
    SELECT year_of_calendar 
    FROM sys_calendar.calendar 
    WHERE year_of_calendar >= 2005
--   '2005', '2006', '2007' 
  ) 
) AS Temp_pivot

我还没有测试过,但是请尝试一下,让我知道。

TD Manual - Pivot

答案 1 :(得分:0)

感谢您的投入。

馄饨,我尝试了子查询选项,但它说“选择失败。子查询返回了3669个以上的值”。

还有其他想法吗?

最佳问候 无效