首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态Netezza枢轴

动态Netezza枢轴
EN

Stack Overflow用户
提问于 2017-12-15 06:38:30
回答 1查看 3K关注 0票数 0

我可以通过使用一系列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语句了?我需要做一些类似的事情,但在白天,这将是一种痛苦。

非常感谢和问候,

EN

回答 1

Stack Overflow用户

发布于 2017-12-15 08:13:01

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

一旦你这样做了,你就可以很容易地用类似于下面的东西来转移你的成本:

代码语言:javascript
复制
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。运行此命令的实际结果是:

代码语言:javascript
复制
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,这样列就会按排序顺序出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47823195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档