我可以通过使用一系列case语句来模拟Netezza中的pivot函数。
i.e
sum(case when substr(CALL_TIME,1,6) = '201701‘then costs 0 end) as "Jan 2017Jan“,
sum(case when substr(CALL_TIME,1,6) = '201702‘then costs 0 end)as“2017年2月”,
sum(case when substr(CALL_TIME,1,6) = '201703‘then costs 0 end) as“2017年3月”
有没有可能做同样的事情,但是使用动态列名,这样我就不会每个月都有单独的case语句了?我需要做一些类似的事情,但在白天,这将是一种痛苦。
非常感谢和问候,
丹
发布于 2017-12-15 08:13:01
这是可能的,但您需要创建自己的pivot函数。这段精彩的代码记录在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,这样列就会按排序顺序出现。
https://stackoverflow.com/questions/47823195
复制相似问题