我可以使用一系列案例陈述来模仿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月"
是否可以使用动态列名进行相同操作,所以我不是每个月都有单独的案例陈述?我需要做类似的事情,但白天它会变得很痛苦。
非常感谢和问候,
丹
答案 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开始日期,以便列按排序顺序显示。