0

レポートを生成しようとしていますが、次のコードでは目的の結果が得られず、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

3 に答える 3

3

あなたの完全なクエリでは、GROUP BY節が欠落していると思います。

SELECT ...
FROM   ....
WHERE   ..
GROUP BY FAS1.ScoreTypeID
于 2012-12-18T14:49:18.693 に答える
1

これがあなたが望むものだと思います:

 coalesce(avg(CASE WHEN FAS1.ScoreTypeID in (22, 52) THEN fas1.totalscore end), 0) AS   'Total Score'

これは、スコアが 22 または 52 の場合の平均を取ります。値が存在しない場合は、NULL を返します。合体は NULL を 0 に変えます。

于 2012-12-18T14:54:17.777 に答える
1

選択した形式に保つには、次を使用できます。

CASE WHEN FAS1.ScoreTypeID IN (22,52) THEN avg(fas1.totalscore) ELSE 0
  END  AS   'Total Score', 
于 2012-12-18T15:02:57.777 に答える