ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
Der erste Begriff legt die primäre Reihenfolge nach dem Monat resource_date
fest (der aktuelle Monat wird der erste, der vorherige der letzte). Der zweite Term ordnet die Zeitstempel innerhalb eines Monats an, unabhängig vom Jahr des Datums. Wenn Ihre Daten keine Zeitteile enthalten oder die Zeitteile absolut irrelevant sind, können Sie es durch DAY(resource_date)
ersetzen . Schließlich berücksichtigt der letzte Begriff das Jahr für ansonsten identische Daten (könnte auch einfach resource_date
sein ).