目录
一、语法说明
1、语法格式
CASE WHEN 条件1 THEN 执行语句1
[WHEN 条件2 THEN 执行语句2]
...
ELSE 默认执行语句
END
2、说明
- CASE语句会根据WHEN后面跟的条件的不同而执行不同的THEN语句,满足条件1则执行执行语句1。而WHEN语句是可以写多条的,如果判断的种类比较多,就可以写多条WHEN,相应的THEN语句也要和WHEN的数量保持一致。最后如果WHEN的条件都不满足,则会执行ELSE后的语句。
- 条件语句是返回布尔语句的条件判断,当判断为true时执行THEN后的语句
- THEN后面的执行语句的类型要与ELSE之后的保持一致
- 最后的END表示CASE 语句结束
二、实例说明
1、需求说明
当前有两张数据表,分别为student表和exam表,数据如下
现在要列出每位学生的各科成绩,要求输出格式:姓名、学号、语文成绩、数学成绩、英语成绩,SQL怎么编写?
2、需求分析
姓名,学号字段来自student表,成绩字段来自exam表,所以需要两表关联
由于需要列出每一位学生的信息,所以student表为左连接的主表
在exam表中只有一列是关于成绩的字段,而最后结果却有三列时成绩,而且区分不同的科目的成绩,所以可以使用case when语句来区分
3、代码编写
SELECT
student.name 姓名
,student.code 学号
,CASE WHEN exam.subject="语文" THEN exam.score ELSE "" END 语文成绩
,CASE WHEN exam.subject="数学" THEN exam.score ELSE "" END 数学成绩
,CASE WHEN exam.subject="英语" THEN exam.score ELSE "" END 英语成绩
FROM
student
LEFT JOIN
exam
ON
student.code=exam.code;
4、结果展示