I’m having trouble sorting this out. I want to see the fiscal quarters for Date_Received. When the @ReviewPeriodQuarter = 1 then I want the Date_Received months 10,11,12. If @ReviewPeriodQuarter = 2 then I want the Date_Received months 1,2,3 etc. SQL Server doesn’t like the BETWEEN part of this. Thanks
x
DECLARE @ReviewPeriodQuarter Int
SELECT * FROM Table
WHERE
MONTH(Date_Received) =
CASE
WHEN @ReviewPeriodQuarter = 1 THEN BETWEEN 10 AND 12
WHEN @ReviewPeriodQuarter = 2 THEN BETWEEN 1 AND 3
WHEN @ReviewPeriodQuarter = 3 THEN BETWEEN 4 AND 6
WHEN @ReviewPeriodQuarter = 4 THEN BETWEEN 7 AND 9
END
Advertisement
Answer
You can either do it with more parameters like Larnu or you can use your original method but tweaked
DECLARE @ReviewPeriodQuarter INT
SELECT *
FROM Table
WHERE MONTH(Date_Received) BETWEEN
CASE
WHEN @ReviewPeriodQuarter = 1 THEN 10
WHEN @ReviewPeriodQuarter = 2 THEN 1
WHEN @ReviewPeriodQuarter = 3 THEN 4
WHEN @ReviewPeriodQuarter = 4 THEN 7
END
AND
CASE
WHEN @ReviewPeriodQuarter = 1 THEN 12
WHEN @ReviewPeriodQuarter = 2 THEN 3
WHEN @ReviewPeriodQuarter = 3 THEN 6
WHEN @ReviewPeriodQuarter = 4 THEN 9
END