Я думаю, что здесь недавно был похожий вопрос, который я не могу найти сейчас, но ответ был что-то на этот счет:
SELECT
SUBSTRING(CONVERT(varchar, ReportDate, 100), 1, 3) + '-' +
SUBSTRING(CONVERT(varchar, ReportDate, 100), 8, 4)
FROM [EnvelopsDB].[dbo].[Envelopes]
GROUP BY
SUBSTRING(CONVERT(varchar, ReportDate, 100), 1, 3),
SUBSTRING(CONVERT(varchar, ReportDate, 100), 8, 4)
ORDER BY MIN(ReportDate)
Кроме того, хотя способ представления выходных данных в формате mmm-yyyy
в целом приемлем, я, вероятно, сделал бы то же самое немного иначе. Здесь:
SELECT
LEFT(DATENAME(month, ReportDate), 3) + '-' +
DATENAME(year, ReportDate)
FROM [EnvelopsDB].[dbo].[Envelopes]
GROUP BY
DATENAME(month, ReportDate),
DATENAME(year, ReportDate)
ORDER BY MIN(ReportDate)