动态Netezza透视

时间:2017-12-14 22:38:30

标签: sql pivot netezza

我可以使用一系列案例陈述来模仿Netezza中的枢轴功能

总和(当substr(CALL_TIME,1,6)=' 201701'然后花费其他0结束时的情况)" 2017年1月",

总和(当substr(CALL_TIME,1,6)=' 201702'然后花费其他0结束时的情况)" 2017年2月",

总和(当substr(CALL_TIME,1,6)=' 201703'然后花费其他0结束时的情况)" 2017年3月"

是否可以使用动态列名进行相同操作,所以我不是每个月都有单独的案例陈述?我需要做类似的事情,但白天它会变得很痛苦。

非常感谢和问候,

1 个答案:

答案 0 :(得分:0)

这是可能的,但您需要创建自己的枢轴功能。这段精彩的代码记录在dynamic-sql-pivoting-stealing-antons-thunder

一旦您这样做,您可以使用类似于以下内容的方式轻松调整成本:

SELECT *
  FROM TABLE (pivot ('select office, to_char(call_time, ''YYYYMM-MON'') themonth, sum(costs) cost_sum from brianl.deleteme_tbl group by  to_char(call_time, ''YYYYMM-MON''), office'));

我的deleteme_tbl有办公室,费用和call_time。运行它的实际结果是:

OFFICE    201701-JAN 201702-FEB 201703-MAR 201704-APR 201705-MAY 201706-JUN 201707-JUL 201708-AUG 201709-SEP
Anchorage 45         23         15         25         25         5          15         50         30

我使用YYYYMM开始日期,以便列按排序顺序显示。