2 回答

TA貢獻1803條經驗 獲得超3個贊
select 課程,
sum(case when 姓名='李四' then 成績 end)as '李四',
sum(case when 姓名='張三' then 成績 end)as '張三'
from table_2
group by 課程
--意思是:
查詢結果按照“課程”、“李四的成績”、“張三的成績”顯示出來,
其中“李四的成績”計算方法是:
當姓名=李四,那么就計算將該行的成績按照課程進行分類加總
“張三的成績”計算方法是:
當姓名=張三,那么就計算將該行的成績按照課程進行分類加總
select 姓名,
sum(case when 課程='語文' then 成績 end)as '語文',
sum(case when 課程='數學' then 成績 end)as '數學',
sum(case when 課程='英語' then 成績 end)as '英語'
from table_2
group by 姓名
--類似的意思是:
查詢結果按照“姓名”、“語文”、“數學”、“英語”按照姓名進行加總各科成績顯示出來,
其中“語文”成績計算方法是:
當科目=語文,那么就計算將該行的成績按照姓名進行分類加總
“數學”成績計算方法是:
當科目=數學,那么就計算將該行的成績按照姓名進行分類加總
“英語”成績計算方法是:
當科目=英語,那么就計算將該行的成績按照姓名進行分類加總
case when 條件 then 表達式1 else 表達式2 end
表示:當條件成立,則返回表達式1,否則返回表達式2.
因此:sum(case when 姓名='李四' then 成績 end)as '李四', 表示如果姓名為李四,則加總計算成績,列名為‘李四’
類似的樓主可以自己理解了。

TA貢獻1111條經驗 獲得超0個贊
case的意思.就相等的程序中的if 也就是如果
case when 課程='語文' then 成績 end
翻譯就是..如果課程列的記錄等于語文,那么就取此行成績列的值.
本來是取課程的值..
- 2 回答
- 0 關注
- 104 瀏覽
添加回答
舉報