教师号 星期号 是否有课
1 2 有
1 3 有
2 1 有
3 2 有`
1 2 有
写一条sql语句让你变为这样的表
教师号 星期一 星期二 星期三
1 2 1
2 1
3 1
各星期下的数字表示:对应的教师在星期几已经排的课数
网上的答案是 :
select 教师号,sum(CASE 星期号 WHEN 1 THEN 1 ELSE 0 END) AS 星期号1,
sum(CASE 星期号 WHEN 2 THEN 1 ELSE 0 END) AS 星期号2,
sum(CASE 星期号 WHEN 3 THEN 1 ELSE 0 END) AS 星期号3
FROM 课程表 group by 教师号
但结果和题目要求不相符 没有课的是空白 上面的结果没有课的是0, 。。。
------解决方案--------------------
如果是用mysql 这个肯定是你想要的结果
SELECT
aa.teacher_id,
IF(SUM(CASE aa.day_num WHEN 1 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 1 THEN 1 ELSE NULL END)) AS 星期1,
IF(SUM(CASE aa.day_num WHEN 2 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 2 THEN 1 ELSE NULL END)) AS 星期2,
IF(SUM(CASE aa.day_num WHEN 3 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 3 THEN 1 ELSE NULL END)) AS 星期3
FROM (
SELECT
teacher_id,
day_num,
is_free
FROM test
WHERE is_free =1
) AS aa GROUP BY aa.teacher_id