Как установить календарь календарей на финансовый месяц или отсортировать календарь с 10 октября по 09 сентября? - PullRequest
0 голосов
/ 23 апреля 2019

Мне нужно отсортировать месяцы по финансовому календарю нашей компании. На данный момент я могу сортировать только по алфавиту, апрель, август, декабрь, февраль. Мне нужно это сортировать октябрь-сентябрь

Fiscal Year Month Name COUNT(DISTINCT CTL_NO) 
2019        April                         437 
2019        December                      707 
2019        February                      600 
2019        January                       730 
2019        March                         542 
2019        November                      745 
2019        October                       955 
2018        April                         600 
2018        August                        902 
2018        December                      728 
2018        February                      593 
2018        January                       745 
2018        July                          812 
2018        June                          704 
2018        March                         671 
2018        May                           589 
2018        November                      590 
2018        October                       769 
2018        September                     810

1 Ответ

1 голос
/ 24 апреля 2019

Один из способов сделать это - использовать выражение 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 строк в год, поэтому накладных расходов не много.Таблицы, подобные этой, обычно заполняются за несколько лет до «сейчас», и данные за прошлые годы остаются на месте практически всегда, чтобы можно было искать прошлые даты и легко определять соответствующие финансовые даты.

Удачи.

...