Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何通过一个查询从单个列中获取多个计数?_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

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)添加回查询中——正如您所展示的那样!非常感谢你!