SQL进阶教程第一章------CASE表达式: 表之间的数据匹配
CASE表达式的一大优势在于能够判断表达式,在CASE表达式里面我们可以使用BETWEEN LIKE和< >等便利的谓词组合,以及能嵌套子查询的IN 和EXISTS谓词。
如下是一张资格培训学校的课程一览表CourseMaster 和一张管理每个月所设置课程的表OpenCourses。
课程一览表
开设的课程
想要用这两张表生成下面的表:
使用CASE语句进行
SELECT course_name, CASE WHEN course_id IN (SELECT course_id FROM opencourses WHERE MONTH = '200706') THEN 'O' ELSE 'X' END AS '六月' , CASE WHEN course_id IN (SELECT course_id FROM opencourses WHERE MONTH = '200707') THEN 'O' ELSE 'X' END AS '七月', CASE WHEN course_id IN (SELECT course_id FROM opencourses WHERE MONTH = '200708') THEN 'O' ELSE 'X' END AS '八月' FROM coursemaster;
思路:我们看整张表其实是一章Course信息的表,和之前的按照地区对男女的人数进行统计的题目是类似的,需要将列的内容转换为行的内容。仅仅是对每门课程在几月份进行开展进行了一个展示,并不需要使用统计和聚合,因此也不需要排序。月份增加的时候仅仅修改SELECT子句就可以了,扩展性比较好。