49,2,60,96,30
通過case表達式
select id,name,sum(case when course='語文' then score end) "語文",
sum(case when course='數學' then score end) "數學",
sum(case when course='英語' then score end) "英語",
sum(case when course='歷史' then score end) "歷史",
sum(case when course='化學' then score end) "化學"
from HANG2LIE
group by id,name;
union有去重功能:
結構如下:
ID NAME Chinese Math English History Chemistry
--- ------- ---------- ---------- ---------- ---------- ----------
2 name_2 85 4 98 9 12
1 name_1 33 63 71 68 94
3 name_3 49 96 30 60 2
我們要實現如下的查詢效果:列轉行
ID NAME COUR SCORE
--- -------- ---- -----
2 name_2 語文 85
1 name_1 語文 33
3 name_3 語文 49
2 name_2 數學 4
1 name_1 數學 63
3 name_3 數學 96
2 name_2 英語 98
1 name_1 英語 71
3 name_3 英語 30
2 name_2 歷史 9
1 name_1 歷史 68
3 name_3 歷史 60
2 name_2 化學 12
1 name_1 化學 94
3 name_3 化學 2
1、集合查詢
實現的SQL語句:
select id,name,'語文' course,chinese score from lie2hang
union
select id,name,'數學' course,math score from lie2hang
union
select id,name,'英語' course,english score from lie2hang
union
select id,name,'歷史' course,history score from lie2hang
union
select id,name,'化學' course,chemistry score from lie2hang;