Sql server Case语句返回相同的值
我收到了以下案例陈述Sql server Case语句返回相同的值,sql-server,Sql Server,我收到了以下案例陈述 SELECT schoolc, COUNT(CASE WHEN (subtestc) IN('ela','Math') AND tscrtypc ='A'THEN (ident) ELSE 0 END)AS [total Students], COUNT(CASE WHEN (testscore)IN('A','P') AND subtestc IN('ela','Math') AND tscrtypc ='A'THEN (ident) EL
SELECT schoolc,
COUNT(CASE WHEN (subtestc) IN('ela','Math') AND tscrtypc ='A'THEN (ident) ELSE 0 END)AS [total Students],
COUNT(CASE WHEN (testscore)IN('A','P') AND subtestc IN('ela','Math') AND tscrtypc ='A'THEN (ident) ELSE 0 END)AS [students above]
FROM [dbo].[qw_star_testing_detail]
WHERE subtestc IN('ela','Math')
AND tscrtypc ='A'
GROUP BY schoolc
它试图对学生总数和学生人数进行两次单独的计算,但对两者的计算结果是相同的。当我运行这个,我得到1966,这是正确的,但当我把它应用到我的情况下,我得到2362。我必须做一些简单的事情
select COUNT(ident),schoolc
FROM [dbo].[qw_star_testing_detail]
WHERE subtestc IN('ela','Math')
AND tscrtypc ='A'
AND testscore IN('A','P')
GROUP BY schoolc
ORDER BY schoolc
COUNT([column])返回结果集中指定列中具有非null值的行数。试着这样做:
SELECT schoolc,
SUM(CASE WHEN (subtestc) IN ('ela','Math') AND tscrtypc ='A'THEN 1 ELSE 0 END) AS [total Students],
SUM(CASE WHEN (testscore)IN ('A','P') AND subtestc IN ('ela','Math') AND tscrtypc ='A'THEN 1 ELSE 0 END) AS [students above]
FROM [dbo].[qw_star_testing_detail]
WHERE subtestc IN('ela','Math')
AND tscrtypc ='A'
GROUP BY schoolc
删除
CASE
语句的ELSE 0
部分,则与CASE
条件不匹配的记录将返回NULL
,该值在聚合函数中被排除
SELECT schoolc
,COUNT(CASE WHEN (subtestc) IN('ela','Math') AND tscrtypc ='A'THEN (ident) END)AS [total Students]
,COUNT(CASE WHEN (testscore)IN('A','P') AND subtestc IN('ela','Math') AND tscrtypc ='A'THEN (ident) END)AS [students above]
FROM [dbo].[qw_star_testing_detail]
WHERE subtestc IN('ela','Math')
AND tscrtypc ='A'
GROUP BY schoolc
非常感谢现在要补充的是,我想从上述两项中得到一个百分点。尝试了以下方法