码迷,mamicode.com
首页 > 其他好文 > 详细

行转列/列转行

时间:2019-04-28 18:57:31      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:when   end   max   to_char   for   nbsp   div   select   pivot   

行转列:

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

行转列/列转行

标签:when   end   max   to_char   for   nbsp   div   select   pivot   

原文地址:https://www.cnblogs.com/BonnieWss/p/10784903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!