cyxdn

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

分类:

技术点:

相关文章:

  • 2022-02-28
  • 2022-12-23
  • 2021-10-26
  • 2022-01-20
  • 2022-12-23
  • 2021-04-03
  • 2021-07-26
  • 2021-10-15
猜你喜欢
  • 2021-09-13
  • 2021-12-04
  • 2021-12-25
  • 2021-07-07
  • 2021-10-27
  • 2022-12-23
  • 2022-01-14
相关资源
相似解决方案