1

重複の可能性:
SQL の Average と Case

SQL Server 2008 を使用してレポートを生成しようとしていますが、次のコードでは目的の結果が得られず、1 行ではなく 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',   
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 に答える