oracle 行列转换《转》

网络上有很多,但这篇做法写的比较简单、清楚。
test:
NAME
KM
CJ
张三
语文
80
张三
数学
86
张三
英语
75
李四
语文
78
李四
数学
85
李四
英语
79
test2:
NAME
语文
数学
英语
张三
80
86
75
李四
78
85
79
行转列sql ------test->test2
SELECT   NAME ,
        SUM ( decode (t.km,  '语文' , t.cj,  0 )) 语文,
        SUM ( decode (t.km,  '数学' , t.cj,  0 )) 数学,
        SUM ( decode (t.km,  '英语' , t.cj,  0 )) 英语
   FROM   test  t
  GROUP   BY  t.name
列转行sql ------test2->test
select  t.name, '语文'   AS  km,t.语文  AS  cj  from  test2 t
UNION   ALL
select  t.name, '数学'   AS  km,t.数学  AS  cj  from  test2 t
UNION   ALL
select  t.name, '英语'   AS  km,t.英语  AS  cj  from  test2 t
ORDER   BY   name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值