Sql 如何通过一个查询从单个列中获取多个计数?
在我编写的一个应用程序中,我有很多查询,看起来应该是一个。。。但我不知道怎么做 以下是一个示例:Sql 如何通过一个查询从单个列中获取多个计数?,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,在我编写的一个应用程序中,我有很多查询,看起来应该是一个。。。但我不知道怎么做 以下是一个示例: SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionID) AS NumberOfSchools FROM Schools WHERE LevelID IN (4,5,6,7,8,14,15,16,20) SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionI
SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionID) AS NumberOfSchools
FROM Schools
WHERE LevelID IN (4,5,6,7,8,14,15,16,20)
SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionID) AS NumberOfSchools
FROM Schools
WHERE LevelID IN (10,11)
然后我还有四个相同的额外查询,只是在最后一行中包含的LevelID中有所不同。我基本上得到了入学人数和学校数量的总和,基于他们提供的年级水平
请记住,我不仅需要结果(我可以简单地合并这些查询),还需要知道哪个数字是哪个
谢谢你的建议
拉塞尔·舒特
SELECT SUM (case
when LevelID IN (4,5,6,7,8,14,15,16,20) then enrollment
else 0
end) as firstEnrollmentCount,
COUNT (case
when LevelID IN (4,5,6,7,8,14,15,16,20) then 1
else 0
end) as firstNumberOfInstitutions,
SUM (case
when LevelID IN (10, 11) then enrollment
else 0
end) as secondEnrollmentCount,
COUNT (case
when LevelID IN (10, 11) then 1
else 0
end) as secondNumberOfInstitutions,
FROM Schools
或者,您可以使用groupbylevelid
,然后在返回查询后将结果相加;如果这是一个选项,那么使用它可能更容易:
SELECT LevelID, Count(*) FROM Schools GROUP BY LevelID
在sum语句中,EDIT将1替换为
enrollment
,以更好地反映原始查询返回的结果。谢谢。。。。我曾经想到过这个团体。。。但后来我在知道返回值时遇到了麻烦,因此我可以正确地将(4,5,6,7,8,14,15,16,20)组相加。有没有办法做到这一点?知道你的回报值是什么意思?使用group by,您有一列表示LevelID,另一列表示每个LevelID的机构数量。您还可以为该LevelID的总注册量设置第三列。一旦你得到了这个查询,你就可以把那些有你想要合并的levelid的行加在一起了。谢谢Gendolkari。。。我已经关注这个问题很久了,我没有想到简单地将ColumnName(LevelID)添加回查询中——正如您所展示的那样!非常感谢你!