我试图生成报告和下面的代码不会产生预期的结果,给了我2号线,而不是一个。
所述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',
我认为,在完整的查询,你缺少的GROUP BY
子句中,如
SELECT ...
FROM ....
WHERE ..
GROUP BY FAS1.ScoreTypeID
我认为这是你想要什么:
coalesce(avg(CASE WHEN FAS1.ScoreTypeID in (22, 52) THEN fas1.totalscore end), 0) AS 'Total Score'
这需要的平均时分数为22或52。如果没有值存在,则返回NULL。 聚结转动NULL成0。
为了保持它在你选择,你可以使用以下格式:
CASE WHEN FAS1.ScoreTypeID IN (22,52) THEN avg(fas1.totalscore) ELSE 0
END AS 'Total Score',