Может быть, запрос ниже поможет вам.
DECLARE @StartDateTime DATETIME
DECLARE @EndDateTime DATETIME
DECLARE @Year int= 2018 --Finanical year
SET @StartDateTime = CAST(CAST(@Year AS VARCHAR(20))+'-04-01' as datetime)
SET @EndDateTime = CAST(CAST(@Year+1 AS VARCHAR(20))+'-03-31' as datetime)
;WITH DateRange(Dates) AS
(
SELECT @StartDateTime as Date
Union ALL
SELECT DATEADD(d,1,Dates)
FROM DateRange
WHERE Dates < @EndDateTime
)
Select distinct DateName( month , DateAdd( month , month(dates) , 0 ) - 1 ) as monthname
,year(dates) as year
, month(dates) as monthnumber
from DateRange
where
(Year(GETDATE())=@Year AND DATEADD(m, DATEDIFF(m, -1, getdate()), 0)<dates)
OR
(Year(GETDATE())<>@Year )
order by year(dates), month(dates)
OPTION (MAXRECURSION 0)