oracle中行轉列操作


數據准備階段:

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;

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM