可能重复:
Average and Case in SQL
我正在使用SQL Server 2008并尝试生成报告,以下代码不会产生所需的结果,这会给我2行而不是1行。 ScoreTypeID的值可以是22,52,3或4。如果它是22或52,我需要平均值,如果不是我需要显示0.任何想法可能是什么问题?感谢。
CASE WHEN FAS1.ScoreTypeID = 22 THEN avg(fas1.totalscore)
WHEN FAS1.ScoreTypeID = 52 THEN avg(fas1.totalscore) ELSE 0
END AS 'Total Score',
答案 0 :(得分:1)
你没有向我们展示其余的查询,一般来说这应该有效;
CASE WHEN FAS1.ScoreTypeID IN (22,52) THEN avg(fas1.totalscore)
ELSE 0 END AS 'Total Score',
或;
ISNULL( AVG( case when FAS1.ScoreTypeID in (22,52) then fas1.totalscore
else null end), 0) as 'Total Score',
答案 1 :(得分:0)
不确定您想要的输出。如果只有一行:
AVG(CASE WHEN FAS1.ScoreTypeID IN (22, 52) THEN fas1.totalscore
ELSE 0 END) AS 'Total Score',
如果是2行:(1行为22,1为52)
SELECT FAS1.ScoreTypeID, AVG(fas1.totalscore) FROM ...
WHERE FAS1.ScoreTypeID IN (22, 52)
GROUP BY FAS1.ScoreTypeID