ORDER BY
(MONTH(resource_date) - MONTH(GETDATE()) + 12) % 12,
DATEADD(year, YEAR(GETDATE()) - YEAR(resource_date), resource_date),
YEAR(resource_date)
Istilah pertama menetapkan urutan utama berdasarkan bulan resource_date
(bulan ini akan menjadi yang pertama, yang sebelumnya, yang terakhir). Istilah kedua memerintahkan stempel waktu dalam waktu satu bulan terlepas dari tahun tanggalnya. Jika tanggal Anda tidak berisi bagian waktu atau jika bagian waktu sama sekali tidak relevan, Anda dapat menggantinya dengan DAY(resource_date)
. Akhirnya, istilah terakhir memperhitungkan tahun untuk tanggal yang identik (bisa juga resource_date
).