这样的查询语句要怎么写?

zhang_13245768 2009-01-18 01:42:09
这是一个记录学员缺勤和未交作业的记录表,类型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 ? ?
。。。。。。。。。。。。。。。。。。
希望有高手能给个查询语句,谢谢
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuqunying0545 2009-01-18
  • 打赏
  • 举报
回复
up,jf
HDNGO 2009-01-18
  • 打赏
  • 举报
回复
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
HDNGO 2009-01-18
  • 打赏
  • 举报
回复
SELECT UserSerID,
SUM( CASE WHEN TypeID = 'A' THEN
1 ELSE 0 END), --缺勤总次数
SUM( CASE WHEN sex = 'W' THEN
1 ELSE 0 END) --未交作业
FROM SX_SchAnnal
GROUP BY UserSerID
walkghost 2009-01-18
  • 打赏
  • 举报
回复
上面错了。case里的A没有加单引号,应该是(没测试):


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



walkghost 2009-01-18
  • 打赏
  • 举报
回复
没测试,不知道对不对。

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
zhang_13245768 2009-01-18
  • 打赏
  • 举报
回复
没有人吗?自己先顶一下!在线等待

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧