Hi Drew,
below is my try DECLARE @EndDate DATETIME
,@StartDate DATETIME
,@Duration TINYINT = 15;
SET @EndDate = getdate();
SET @StartDate = DATEADD(MM, - @Duration, @EndDate)
SELECT UPPER(convert(VARCHAR(3), datename(month, DATEADD(MM, DATEDIFF(MM, 0, @EndDate) - N, 0)))) Month
,DATEADD(MM, DATEDIFF(MM, 0, @EndDate) - N, 0) startdate
,DATEADD(MM, DATEDIFF(MM, 0, @EndDate) - N + 1, 0) - 1 enddate
FROM (
VALUES (0)
,(1)
,(2)
,(3)
,(4)
,(5)
,(6)
,(7)
,(8)
,(9)
,(10)
,(11)
,(12)
,(13)
,(14)
,(15)
,(16)
,(17)
,(18)
,(19)
,(20)
,(21)
,(22)
,(23)
,(24)
) x(N)
WHERE N <= DATEDIFF(MONTH, @StartDate, @EndDate);
I am not sure how do i apply this on your query. because you have used cross apply to calculate EOM. Curious to know about how can i achieve the same in your query