Policy Number
は、複数の異なるClassCode
を持つことができ、1つだけ合計Premium
を持つことができます。私のSSRSレポートでは、パラメータClassCode
を作成できるようにしたいが、少なくとも1つを除外(チェックを外す)した場合は、プレミアムを含むポリシー番号全体を計算に入れないようにする必要があります。 ClassCode 58
を除外したい場合は、Premium
の1,644.00が私の報告の結果ではないはずです。1つの値を除外し、その値を持つすべてを計算に入れない方法
私は私のクエリAND ClassCode <> 58
に言ってみましたが、それだけで1行を除外し、プレミアムanountを保持します。しかし、私の目標は、それはあなたが最初に設定したいClassCodeを持っているすべてのポリシー番号を除外する必要がありClassCode 58
SELECT policynumber,
classcode,
/*
Using ROW_NUMBER() to check if it's the first record in the join and returns the Premium value if so, otherwise it will display 0.
The ORDER BY (SELECT 0) is there just because I don't need the row number to be based on any explicit order.
*/
CASE
WHEN ROW_NUMBER()
OVER (
PARTITION BY cte1.policynumber
ORDER BY (SELECT 0)) = 1 THEN premium
ELSE 0
END AS Premium,
c.yearnum TransEffYearNum,
c.monthnum TransEffMonthNum
FROM cte1
INNER JOIN cte2
ON cte1.policynumber = cte2.policynumber
RIGHT JOIN tblcalendar c
ON c.yearnum = Year(cte1.policyeffectivedate)
AND c.monthnum = Month(cte1.policyeffectivedate)
WHERE c.yearnum = 2016
AND classcode <> 58
ClassCodeはどのテーブルに属していますか? – DVT
ClassCodeはクエリの 'cte2'に属します。私は最終的な 'SELECT'文しかここに表示しません。かなり長いクエリが発生します。 – Oleg
あなたの質問の例では、ポリシー3を完全に排除するか、ClassCode 57のPremiumを0にするだけですか? – DVT