如何将2个条件计数查询合并为一个查询?

问题描述

我想将这两个查询结合起来以获得相同的结果。

代码如下:

SELECT 
    Rollnumber,PapersetName,COUNT(*) as 'Wrongattempt'
FROM Student_data
WHERE Qs = 0
GROUP BY Rollnumber,PapersetName


SELECT 
    Rollnumber,COUNT(*) as 'Correct'
FROM Student_data
WHERE Qs = 1
GROUP BY Rollnumber,PapersetName

解决方法

尝试一下:

SELECT Rollnumber,PapersetName,SUM(IIF(Qs = 1,1,0)) AS 'Correct',SUM(IIF(Qs = 0,0)) AS 'Wrongattempt'
FROM Student_data
GROUP BY Rollnumber,PapersetName;

如果您使用的是其他版本的SQL Server,则不支持SQL Server 2012+和IIF函数,可以像这样使用CASE WHEN

SELECT Rollnumber,SUM(CASE WHEN Qs = 1 THEN  1 ELSE 0 END) AS 'Correct',SUM(CASE WHEN Qs = 0 THEN  1 ELSE 0 END) AS 'Wrongattempt'
FROM Student_data
GROUP BY Rollnumber,PapersetName;
,

感谢@Akina和@gotqn在此方面的帮助...这是答案

SELECT Rollnumber,COUNT(CASE WHEN Qs = 1 THEN  1  END) AS 'Correct',COUNT(CASE WHEN Qs = 0 THEN  1  END) AS 'Wrongattempt'
FROM DB_name
GROUP BY Rollnumber,PapersetName;