MSSQL – ORDER BY date with past dates after upcoming dates
SELECT * FROM tableName ORDER BY (CASE WHEN dateColumn < GETDATE() THEN 1 ELSE 0 END) DESC, dateColumn ASC
source: https://stackoverflow.com/questions/12365246/order-by-date-with-past-dates-after-upcoming-dates