日期:2014-05-17  浏览次数:20685 次

sqlserver 2008, 连接查询并统计
本帖最后由 ynnuyili 于 2012-11-21 09:45:44 编辑
本人有两张表
StudentInfo 和 StudentStayout 分别为
学生信息:StudentInfo有
SiId int --主键
SiName varchar --姓名
SiSex bit --性别
SiMinority varchar -- 民族

学生晚归/夜不归宿信息:StudentStayout 
SsId int --主键
SiId int --外键 引用了学生信息表的SiId
SsType int -- 类型 0:晚归,1:夜不归宿

如果想统计所有学生的晚归和夜不归宿的次数,应该怎么做?

我做了一个查询,但这个查询不能获取其他信息比如:SiName,SiMinority
SELECT
ss.SiId,
SUM(CASE WHEN ss.SsType = 0 THEN 1 ELSE 0 END) AS SvLate,
SUM(CASE WHEN ss.SsType = 1 THEN 1 ELSE 0 END) AS SvNotReturn
FROM StudentStayout AS ss JOIN StudentInfo AS si
ON ss.SiId = si.SiId
GROUP BY ss.SiId



------解决方案--------------------
SELECT ss.SiId,SiName,SiMinority,SUM(CASE WHEN ss.SsType = 0 THEN 1 ELSE 0 END) AS SvLate,SUM(CASE WHEN ss.SsType = 1 THEN 1 ELSE 0 END) AS SvNotReturnFROM StudentStayout AS ss JOIN StudentInfo AS siON ss.SiId = si.SiId
GROUP BY ss.SiId,SiName,SiMinority