Вы можете использовать условные логи c. Предполагая, что date
является строкой:
order by left(date, 4),
(case when not year and not yearmonth then 1 else 2 end),
left(date, 7),
(case when not yearmonth then 1 else 2 end)
date
Редактировать:
Если date
имеет тип date
, то:
order by year(date),
(case when not year and not yearmonth then 1 else 2 end),
month(date),
(case when not yearmonth then 1 else 2 end)
date