Вы можете попробовать использовать cte recursive.
Дата начала - сегодня, дата окончания - следующий год сегодня.
cte recursive
Условие сравнивается при каждом добавлении один месяц.
Запрос 1 :
;WITH CTE(startDt,endDt) AS (
SELECT CAST('2018-05-20' AS DATE) startDt, DATEADD (year,1,'2018-05-20') endDt
UNION ALL
SELECT DATEADD(month,1,startDt) ,endDt
FROM CTE
WHERE DATEADD(month,1,startDt) < endDt
)
SELECT datename(month, startDt)
FROM CTE
Результаты :
| |
|-----------|
| May |
| June |
| July |
| August |
| September |
| October |
| November |
| December |
| January |
| February |
| March |
| April |