日期:2014-05-18  浏览次数:20463 次

这样的查询语句要怎么写?
这是一个记录学员缺勤和未交作业的记录表,类型W表示未交作业,A表示缺勤,
其中学员编号是不确定
  自动标示 班级编号 上课编号 学员编号 类型
SELECT SerID, CaCaID, CaSerID, UserSerID, TypeID FROM SX_SchAnnal
  1 51 1 101001 A
  2 51 1 101002 A  
  3 51 2 101003 W
  4 51 2 101003 A
  5 51 3 101001 W
  6 51 3 101002 W
  7 51 4 101003 W
  8 51 4 101003 A
  9 51 5 101003 A
。。。。。。。。。。。。。。。。。。。。。。。。。。。
要求查询出如下格式的数据
学员编号 未交作业总次数 缺勤总次数
101001 ? ?
101002 ? ?
。。。。。。。。。。。。。。。。。。
希望有高手能给个查询语句,谢谢

------解决方案--------------------
上面错了。case里的A没有加单引号,应该是(没测试):
SQL code


select 
sum(case TypeID when 'A' then 1 else 0 end) as '缺勤总次数',
count(*)-sum(case TypeID when 'A' then 1 else 0 end) as '未交作业数',
UserSerID as '学号'
 from SX_SchAnnal
group by UserSerID

------解决方案--------------------
SQL code
SELECT UserSerID,
       SUM( CASE WHEN TypeID = 'A' THEN 
                      1 ELSE 0 END),  --缺勤总次数
        SUM( CASE WHEN TypeID = 'W' THEN 
                      1 ELSE 0 END)   --未交作业
FROM  SX_SchAnnal
GROUP BY UserSerID