• 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