ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
Първият термин задава основния ред до месеца на resource_date
(текущият месец ще бъде първи, предишният - последен). Вторият термин подрежда времевите клейма в рамките на един месец, независимо от годината на датата. Ако вашите дати не съдържат времеви части или ако времевите части са абсолютно неуместни, можете да го замените с DAY(resource_date)
. И накрая, последният член взема предвид годината за иначе идентични дати (може също да бъде просто resource_date
).