MySQL 的 case when 的語法有兩種:
1.簡單函數
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
SELECT NAME '英雄', CASE NAME WHEN '德萊文' THEN '斧子' WHEN '德瑪西亞-蓋倫' THEN '大寶劍' WHEN '暗夜獵手-VN' THEN '弩' ELSE '無' END '裝備' FROM user_info;
2.搜索函數
CASE WHEN [expr] THEN [result1]…ELSE [default] END
# when 表達式中可以使用 and 連接條件 SELECT NAME '英雄', age '年齡', CASE WHEN age < 18 THEN '少年' WHEN age < 30 THEN '青年' WHEN age >= 30 AND age < 50 THEN '中年' ELSE '老年' END '狀態' FROM user_info;
聚合函數 sum 配合 casewhen 的簡單函數實現行轉列
聚合函數 sum 配合 case when 的簡單函數實現行轉列 SELECT st.stu_id '學號', st.stu_name '姓名', sum( CASE co.course_name WHEN '大學語文' THEN sc.scores ELSE END ) '大學語文', sum( CASE co.course_name WHEN '新視野英語' THEN sc.scores ELSE END ) '新視野英語', sum( CASE co.course_name WHEN '離散數學' THEN sc.scores ELSE END ) '離散數學', sum( CASE co.course_name WHEN '概率論與數理統計' THEN sc.scores ELSE END ) '概率論與數理統計', sum( CASE co.course_name WHEN '線性代數' THEN sc.scores ELSE END ) '線性代數', sum( CASE co.course_name WHEN '高等數學' THEN sc.scores ELSE END ) '高等數學' FROM edu_student st LEFT JOIN edu_score sc ON st.stu_id = sc.stu_id LEFT JOIN edu_courses co ON co.course_no = sc.course_no GROUP BY st.stu_id ORDER BY NULL;
參考鏈接:
https://www.cnblogs.com/chenduzizhong/p/9590741.html