ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
Den första termen anger den primära ordningen efter månaden resource_date
(den aktuella månaden kommer att vara den första, den föregående, den sista). Den andra termen beställer tidsstämplarna inom en månad oavsett år för datumet. Om dina datum inte innehåller tidsdelar eller om tidsdelarna är absolut irrelevanta kan du ersätta det med DAY(resource_date)
. Slutligen tar den sista termen hänsyn till året för annars identiska datum (kan också helt enkelt vara resource_date
).