姓名 | 科目 | 成績 |
阿毛 | 數學 | 100 |
阿毛 | 國文 | 89 |
阿花 | 數學 | 90 |
阿花 | 國文 | 70 |
現在目標要將Score這張Table轉換如下圖:
姓名 | 數學 | 國文 |
阿毛 | 100 | 89 |
阿花 | 90 | 70 |
這時SQL指令有兩種下法:
(SQL與Oracle都可用)Case 版:
Select 姓名,
sum((case when 科目='數學' then 成績 else 0 end)) 數學,
sum((case when 科目='國文' then 成績 else 0 end)) 國文
from Score
group by 姓名
Decode 版:(只有Oracle可用)
Select 姓名,
sum(decode(科目,'數學',成績,0)) 數學,
sum(decode(科目,'國文',成績,0)) 國文
from Score
group by 姓名
參考資料:sql與oracle中有關case和decode的用法(行轉列)及比較
沒有留言:
張貼留言