Oracle 多行转多列

今天碰到个需求是多行转多列,在网上没找到类似问题(多行转多列)的有效解决方法

这是我个人头脑风暴出的解决方式,请参考

 

比如一个表,有多个维度(时间,险种,机构),

-- Create table
create table t
(
  orgcode varchar2(10),
  stsdate date,
  risk    varchar2(10),
  VALUE   NUMBER
)
;

造数据如下图

需要展示的结果为:

这个通过case when 是可以实现的,不过是维度比较少的时候用着比较方便

如果维度很多,维度的值也比较多,case when就写着很费劲

我这里用的是pivot关键字


SELECT *
  FROM (SELECT ORGCODE, 
               TO_CHAR(STSDATE, 'yyyy-mm-dd') || RISK WD, --把需要展示维度的列拼接到一块
               VALUE
          FROM T) PIVOT(MAX(VALUE) FOR WD IN('2019-09-19P0' as 同期p0,--上边拼接到一块的所有结果合集
                                             '2019-09-19P1',
                                             '2019-09-19P2',
                                             '2018-09-19P0',
                                             '2018-09-19P1',
                                             '2018-09-19P2'))

用上边的sql查出来的结果如下:

如有更好的解决方式,请留言交流

谢谢~

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值