Один из способов сделать это - использовать выражение CASE для установки ключа сортировки.Поскольку ваша таблица хранит месяцы в виде строк, нам нужно преобразовать их в DATE.Получив тип данных DATE, мы можем извлечь номер месяца, который мы можем использовать для сортировки
SELECT Fiscal_Year, Month_Name, COUNT(DISTINCT CTL_NO)
FROM SOME_TABLE t
group by Fiscal_Year, Month_Name
ORDER BY Fiscal_year
, CASE TRIM(TO_CHAR(to_date(Month_Name,'Month'), 'MM'))
WHEN '10' THEN -2
WHEN '11' THEN -1
WHEN '12' THEN 0
ELSE TO_NUMBER(TO_CHAR(to_date(Month_Name,'Month'), 'MM'))
END
Это хорошо для одноразового использования, такого как школьное задание, но оно не очень надежное и должно бытьповторяется каждый раз, когда вам это нужно.
Гораздо лучший способ - иметь таблицу фискального календаря, которая сообщает вам, какой финансовый год, фискальный месяц, фискальная неделя и т. д. существует для каждого календарного дня каждого года.Это всего 365/366 строк в год, поэтому накладных расходов не много.Таблицы, подобные этой, обычно заполняются за несколько лет до «сейчас», и данные за прошлые годы остаются на месте практически всегда, чтобы можно было искать прошлые даты и легко определять соответствующие финансовые даты.
Удачи.