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子句就可以了,扩展性比较好。

posted @ 2019-07-22 16:52  Garcia11  阅读(288)  评论(0)    收藏  举报