1

可能重复:
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',   
4

2 回答 2

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',
于 2012-12-21T09:43:52.857 回答
0

不确定你想要什么输出。如果只有 1 行:

AVG(CASE WHEN FAS1.ScoreTypeID IN (22, 52) THEN fas1.totalscore
         ELSE 0 END) AS 'Total Score',

如果 2 行:(22 行 1 行,52 行 1 行)

SELECT FAS1.ScoreTypeID, AVG(fas1.totalscore) FROM ...
WHERE FAS1.ScoreTypeID IN (22, 52)
GROUP BY FAS1.ScoreTypeID
于 2012-12-21T09:48:35.247 回答