I have a [Year/Week] column, based on which I want to have a window of 12 weeks inclusive of current week. For example: If current week is Week 5, I want to show my window from Week 5 to Week 16, regardless if the current day is Monday or Friday.
I have tried setting some numbers to adjust this window in the code below, but I believe there must be a better way.
CREATE TABLE #DATES ([Year/Week] VARCHAR(MAX))
INSERT INTO #DATES ([Year/Week]) VALUES
('2019/W01'),('2019/W02'),('2019/W03'),('2019/W04'),('2019/W05')
,('2019/W06'),('2019/W07'),('2019/W08'),('2019/W09'),('2019/W10')
,('2019/W11'),('2019/W12'),('2019/W13'),('2019/W14'),('2019/W15')
,('2019/W16'),('2019/W17'),('2019/W18'),('2019/W19'),('2019/W20')
,('2019/W21'),('2019/W22'),('2019/W23'),('2019/W24'),('2019/W25')
,('2019/W26'),('2019/W27'),('2019/W28'),('2019/W29'),('2019/W30')
,('2019/W31'),('2019/W32'),('2019/W33'),('2019/W34'),('2019/W35')
SELECT DISTINCT
CONVERT(INT, LEFT([Year/Week], 4)) AS [Year]
,CONVERT(INT, RIGHT([Year/Week], 2)) AS [Week]
,dateadd (week, CONVERT(INT, RIGHT([Year/Week], 2)), dateadd (year,
CONVERT(INT, LEFT([Year/Week], 4))-1900, 0)) - 4 -
datepart(dw, dateadd (week, CONVERT(INT, RIGHT([Year/Week], 2)),
dateadd (year, CONVERT(INT, LEFT([Year/Week], 4))-1900, 0)) - 4) + 1 AS
[Week Date]
FROM #DATES
WHERE dateadd (week, CONVERT(INT, RIGHT([Year/Week], 2)), dateadd (year,
CONVERT(INT, LEFT([Year/Week], 4))-1900, 0)) - 4 -
datepart(dw, dateadd (week, CONVERT(INT, RIGHT([Year/Week], 2)),
dateadd (year, CONVERT(INT, LEFT([Year/Week], 4))-1900, 0)) - 4) + 1
BETWEEN GETDATE() - 3 AND GETDATE() + 81
ORDER BY [Year], [Week]