首页 > 其他 > 详细

行转列/列转行

时间:2019-04-28 18:29:22      阅读:157      评论:0      收藏:0      [点我收藏+]

行转列:

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!