暂无图片
一个麻烦的UNPIVOT实现
我来答
分享
ORACLE11g
2021-10-12
一个麻烦的UNPIVOT实现

表结构如下:

 ENTITY_CODE,              A公司            B公司 

AMOUNT_A_1YUE,         100

AMOUNT_B_1YUE,         200

AMOUNT_C_1YUE,        300

AMOUNT_A_2YUE,                              150

AMOUNT_B_2YUE,                              250

AMOUNT_C_2YUE;                             350

如何转换为

ENTITY_CODE, PERIOD(期间),AMOUNT_A, AMOUNT_B, AMOUNT_C

------------------------------------------------------------------------------

A公司                1月                    100                200            300

B公司                2月                    150                250             350




我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Uncopyrightable

PERIOD(期间)列咋来的?

暂无图片 评论
暂无图片 有用 0
ORACLE11g

列转行 转出来的呀

暂无图片 评论
暂无图片 有用 0
chengang

你这个写case when 就可以出来了。不麻烦啊。

暂无图片 评论
暂无图片 有用 0
DarkAthena

不是很麻烦

with t1 as (select regexp_substr(ENTITY_CODE, '[^_]+', 1, 2) ENTITY_CODE, REPLACE(regexp_substr(ENTITY_CODE, '[^_]+', 1, 3), 'YUE', '月') PERIOD, A公司, B公司 from test_pivot), t2 as (select * from t1 unpivot(amount FOR 公司 in(A公司, B公司))) select * from t2 pivot (sum(amount) for ENTITY_CODE in('A' AMOUNT_A, 'B' AMOUNT_B, 'C' AMOUNT_C))
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏