-1

以下のような複数の case ステートメントを持つ SQL ステートメントがあります。

SUM(CASE [Type]
    WHEN 418
    THEN CASE WHEN PMTS.DateCreated BETWEEN @sd AND @ed
    AND( PMTS.Amount >0 OR PMTS.Mileage >0)
    AND PMTS.PaymentEventID = 0 THEN Mileage END
    ELSE 0 END) AS DriverMileage

しかし、変数を設定し、それを WHERE 句の where で使用するには、合計の結果が必要です。

以下の例

DECLARE @contribution decimal
SElECT PMTS.VolunteerId ,
SET @contribution = SUM(CASE [Type]
              WHEN 1003
              THEN CASE WHEN PMTS.DateCreated BETWEEN @sd AND @ed
      AND( PMTS.Amount >0 OR PMTS.Mileage >0)
              AND PMTS.PaymentEventID = 0
              THEN Amount END
              ELSE 0 END) AS GPContributions
FROM PMTS WHERE @contribution >0

どうもありがとう

4

1 に答える 1

0

ここで変数は必要ないと思います。また、使用されている「case when」構文を確認してください。サンプルクエリは次のとおりです。

select * from 
(SElECT PMTS.VolunteerId ,SUM(CASE [Type]
              WHEN 1003
              THEN CASE WHEN PMTS.DateCreated BETWEEN @sd AND @ed
      AND( PMTS.Amount >0 OR PMTS.Mileage >0)
              AND PMTS.PaymentEventID = 0
              THEN Amount END
              ELSE 0 END) AS GPContributions
FROM PMTS)as A WHERE GPContributions >0
于 2013-08-13T20:18:35.077 に答える