ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
Pierwszy termin określa kolejność podstawową według miesiąca resource_date
(pierwszy będzie bieżący miesiąc, poprzedni, ostatni). Drugi termin porządkuje znaczniki czasu w ciągu miesiąca, niezależnie od roku daty. Jeśli daty nie zawierają części czasu lub jeśli części czasu są absolutnie nieistotne, możesz je zastąpić DAY(resource_date)
. Wreszcie, ostatni termin uwzględnia rok dla identycznych dat (może to być również po prostu resource_date
).