行转列/列转行

行转列:

select t.*, t.rowid from TEST1 t
 
ID  C1    C2   C3
1  小红  数学  10  
2  小红  语文  20  
3  小栏  数学  15  
4 小栏 语文 25
 
--test1
SELECT C1,to_char(WM_CONCAT(C2)) c2 FROM TEST1 group by c1
--结果:
 C1      C2
小红 数学,语文
小栏 数学,语文
 
 
--test2
select c1, max(math) as math, max(yuwen) as yuwen
  from (SELECT c1,
               case
                 when c2 = '数学' then
                  c3
               end as math,
               case
                 when c2 = '语文' then
                  c3
               end as yuwen
          from test1)
 group by c1
--结果: 
 C1  数学 语文
小红 10 20
小栏 15 25
 
--test3
select *
  from (select c2, c3 from test1) pivot(sum(c3) for c2 in('数学', '语文'))
--结果:
数学  语文
 25    45
 
--test4
select *
  from (select c1, c2,c3 from test1) pivot(max(c3) for c2 in('数学', '语文'))
--结果:
 C1  数学 语文
小红 10 20
小栏 15 25

转载于:https://www.cnblogs.com/BonnieWss/p/10784903.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值