这是一个记录学员缺勤和未交作业的记录表,类型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_SchAnnalgroup 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_SchAnnalGROUP BY UserSerID