码迷,mamicode.com
首页 > 数据库 > 详细

oracle中行转列操作

时间:2019-01-17 20:03:51      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:font   pre   student   英语   class   commit   语文   数学   arch   

数据准备阶段:

CREATE TABLE CC  (Student NVARCHAR2(2),Course NVARCHAR2(2),Score INT); 

INSERT into CC   
select N‘张三‘,N‘语文‘,78 from dual union all  
select N‘张三‘,N‘数学‘,87 from dual union all  
select N‘张三‘,N‘英语‘,82 from dual union all  
select N‘张三‘,N‘物理‘,90 from dual union all  
select N‘李四‘,N‘语文‘,65 from dual union all  
select N‘李四‘,N‘数学‘,77 from dual union all  
select N‘李四‘,N‘英语‘,65 from dual union all  
select N‘李四‘,N‘物理‘,85 from dual ;  
commit; 

技术分享图片

操作如下:

方法一、

select 
student,
sum(decode(course,语文,score)) 语文,
sum(decode(course,数学,score)) 数学,
sum(decode(course,英语,score)) 英语,
sum(decode(course,物理,score)) 物理,
sum(score)
from cc group by student;

技术分享图片

 

 方法二、

SELECT KIN.*,  
  KIN.a+KIN.b+KIN.c+KIN.d AS TOTAL  
FROM  
  (SELECT   *  
  FROM CC PIVOT ( MAX(SCORE) FOR COURSE IN (语文 AS A , 数学 AS B, 英语 AS C,物理 AS D) )  
  ) KIN; 

 

方法三、

select 
student,
sum(case when course = 语文 then score else 0 end )语文,
sum(case when course = 数学 then score else 0 end )数学,
sum(case when course = 英语 then score else 0 end )英语,
sum(case when course = 物理 then score else 0 end )物理
from cc group by student;

完。

oracle中行转列操作

标签:font   pre   student   英语   class   commit   语文   数学   arch   

原文地址:https://www.cnblogs.com/hello-wei/p/10283527.html

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