MySQL-嵌套使用 CASE 表达式

创建一张用于管理员工学习过的培训课程的表,如下所示:

MySQL-嵌套使用 CASE 表达式_第1张图片

CREATE TABLE stuCourses(
    id INT NOT NULL,
    stuname CHAR(20),
    course CHAR(50)
);

插入数据。

利用上面这张表生成下面这样一张交叉表(“课程学习记录一览表”)。 ○表示已学习过,NULL 表示尚未学习。

嵌套使用 CASE 表达式完成

CASE 表达式可以
写在 SELECT 子句里的聚合函数内部,也可以写在聚合函数外部。这里,我们先把 SUM 函数的结果处理成 1 或者 NULL,然后在 外层的 CASE 表达式里将 1 转换成○。

SELECT stuname,
CASE WHEN SUM(CASE WHEN course = 'SQL入门' THEN 1 ELSE NULL END) = 1 THEN '○' ELSE NULL END AS "SQL入门",
CASE WHEN SUM(CASE WHEN course = 'UNIX基础' THEN 1 ELSE NULL END) = 1 THEN '○' ELSE NULL END AS "UNIX基础",
CASE WHEN SUM(CASE WHEN course = 'Java中级' THEN 1 ELSE NULL END) = 1 THEN '○' ELSE NULL END AS "Java中级 " 
FROM stuCourses GROUP BY stuname;

MySQL-嵌套使用 CASE 表达式_第2张图片

 

你可能感兴趣的:(开发应用-数据库MySQL)