decode case list agg wm_concat pivot(行转列) 和unpivot(列转行)
成绩表(CHENGJI)如下:
create table CHENGJI (XINGMING varchar2(30),KEMU varchar2(30),CHENGJI number)XINGMING KEMU CHENGJI
1 张三 语文 89.00
2 张三 数学 98.00
3 张三 英语 88.00
4 李四 语文 90.00
5 李四 数学 89.00
6 李四 英语 60.00
7 王五 数学 66.00
8 王五 英语 99.00
方法一、DECODE
SELECT CJ.XINGMING,
SUM(DECODE(CJ.KEMU, '语文', CJ.CHENGJI, 0)) 语文,
SUM(DECODE(CJ.KEMU, '数学', CJ.CHENGJI, 0)) 数学,
SUM(DECODE(CJ.KEMU, '英语', CJ.CHENGJI, 0)) 英语
FROM CHENGJI CJ
GROUP BY CJ.XINGMING
XINGMING 语文 数学 英语
1 张三 89 98 88
2 王五 0 66 99
3 李四 90 89 60
方法二、CASE WHEN
SELECT CJ.XINGMING,
SUM( CASE WHEN CJ.KEMU = '语文' THEN CJ.CHENGJI ELSE 0 END ) 语文,
SUM( CASE WHEN CJ.KEMU = '数学' THEN CJ.CHENGJI ELSE 0 END ) 数学,
SUM( CASE WHEN CJ.KEMU = '英语' THEN CJ.CHENGJI ELSE 0 END ) 英语
FROM CHENGJI CJ
GROUP BY CJ.XINGMING
XINGMING 语文 数学 英语
1 张三 89 98 88
2 王五 0 66 99
3 李四 90 89 60