SQL 练习题目

 1.行转列

教师号  星期号 是否有课
 1    2   有
 1    3   有
 2    1   有
 3    2   有`
 1    2   有
写一条sql语句让你变为这样的表
教师号 星期一 星期二 星期三
 1       2   1 
 2   1   
 3       1
各星期下的数字表示:对应的教师在星期几已经排的课数

查了一些关于行转列的知识, 发现有pivot这个关键字的用法,可是mysql里面, 我没有成功,不知道是不是mysql不支持这个关键字。用case when解决的答案如下:

 

SELECT TQ_NUM, 
SUM(case DAY_NUM when 1 then 1 else 0 end) Monday,
SUM(case when DAY_NUM=2 AND HAS_CLASS='有' then 1 else 0 end) Tuesday,
SUM(case when DAY_NUM=3 AND HAS_CLASS='有' then 1 else 0 end) Wednesday from classes group by TQ_NUM;

 

 

 

posted @ 2013-04-11 16:08  叶子盛忆  阅读(234)  评论(0编辑  收藏  举报