Я бы упростил это, используя VALUES
.Используя вашу логику:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY
CASE MonthName
WHEN 'January' THEN 1
WHEN 'February' THEN 2
WHEN 'March' THEN 3
WHEN 'April' THEN 4
WHEN 'May' THEN 5
WHEN 'June' THEN 6
WHEN 'July' THEN 7
WHEN 'August' THEN 8
WHEN 'September' THEN 9
WHEN 'October' THEN 10
WHEN 'November' THEN 11
WHEN 'December' THEN 12
ELSE 0
END;
Однако вы можете упростить это до:
SELECT v.MonthName
FROM (VALUES (DATENAME(month, DATEADD(month, 6, getdate()))),
(DATENAME(month, DATEADD(month, 7, getdate()))),
(DATENAME(month, DATEADD(month, 8, getdate()))),
(DATENAME(month, DATEADD(month, 9, getdate())))
) V(MonthName)
ORDER BY cast(MonthName + '1, 2000' as date);