1.創建測試表
CREATE TABLE CC
(Student NVARCHAR2(2),Course NVARCHAR2(2),Score INT
);
2.插入測試數據
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;
3.使用不同函數的結果
使用WM_CONCAT函數:
SELECT STUDENT,TO_CHAR(WM_CONCAT(SCORE)),SUM(SCORE) FROM CC GROUP BY STUDENT;
執行結果:
使用PIVOT函數:
SELECT T1.*,T1.語文+T1.數學+T1.英語+T1.物理 AS 總計
FROM
(
SELECT * FROM CC PIVOT ( MAX(SCORE) FOR COURSE IN ('語文' AS 語文 , '數學' AS 數學, '英語' AS 英語,'物理' AS 物理) )
) T1;
執行結果:
使用DECODE函數:
SELECT STUDENT,
MAX(DECODE(COURSE, '語文', SCORE)) 語文,
MAX(DECODE(COURSE, '數學', SCORE)) 數學,
MAX(DECODE(COURSE, '英語', SCORE)) 英語,
MAX(DECODE(COURSE, '物理', SCORE)) 物理,
SUM(SCORE) 總計
FROM CC
GROUP BY STUDENT;
執行結果: