oracle -pivot和unpivot进行行列转换

A表:                                                       

       ID DTIME    NUM
--------- -------- ---
      101 20190201  10
      101 20190202  20
      101 20190203  50
      101 20190203  20
      102 20190201  20
      102 20190202  30
      102 20190203  60
      103 20190201  60
      103 20190203  90

select * from test_a pivot (
    sum(num) for dtime in (20190201,20190202,20190203)
);

        ID   20190201   20190202   20190203
---------- ---------- ---------- ----------
       101         10         20         70
       102         20         30         60
       103         60                    90

 

PIVOT语法

SELECT ...
   FROM ...
   PIVOT [XML] 
            ( pivot_clause 
               pivot_for_clause 
               pivot_in_clause )
WHERE ...
说明:
pivot_clause:定义将要进行聚合操作的列;
pivot_for_clause:定义将要进行分组和转换的列;
pivot_in_clause:定义在pivot_for_clause中对列的过滤,对于pivot_in_clause中每一个值进行,并转换为单个列。


Sselect *from (select sal,deptno,job from emp)
   pivot (
  sum(sal)
   for deptno in(10,20,30,40)
   );
 
JOB          10         20   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值