製品タイプ列に基づいて特定の条件を選択するために、where 句で case ステートメントを使用する方法を見つけようとしています。where 句の最初の部分は、両方のシナリオに共通です。Product タイプが STD の場合、EntryDate が当月の初日から昨日までの間にあるかどうかを確認する必要があります。Product が LTD の場合、EntryDate が昨日から 7 日前までの間にあるかどうかを確認する必要があります。
DECLARE @firstDayOfCurrentMonth datetime
SET @firstDayOfCurrentMonth = CAST(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '/' + CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '/01' AS DATETIME)
SELECT DCMNumber, COUNT(*) AS PriorDenied
FROM cauAssignedClaim
WHERE RecordType = 'A' AND [Status] IS NULL AND
CASE WHEN Product = 'LTD' THEN EntryDate BETWEEN @firstDayOfCurrentMonth AND GETDATE()-1
CASE WHEN Product = 'STD' THEN EntryDate BETWEEN DATEADD(Day, -7, GETDATE()-1) AND GETDATE()-1
END
GROUP BY [Status], DCMNumber