SQL - считать даты, которые находятся между одинаковыми датами каждый год - PullRequest
0 голосов
/ 05 августа 2020

У меня есть таблица со следующими строками:

    date            
 2018-09-01           
 2018-10-01     
 2019-01-01
 2019-09-01
 2020-03-01
 2020-08-01

Скажем, финансовый год начинается в октябре предыдущего года и заканчивается в сентябре этого года. Таким образом, 2020 финансовый год будет с 2019-10-01 до 2020-09-30. Я пытаюсь подсчитать даты, которые попадают в каждый финансовый год, поэтому создайте следующую таблицу:

  date_count     fiscal_year    
      1              FY18
      3              FY19           
      2              FY20 

Я пробовал следующее, чтобы получить один год:

SELECT count(*) as date_count, 'FY18' as fiscal_year
FROM table_name
WHERE date between '2017-10-01' and '2018-09-30'

и Я получаю

  date_count     fiscal_year    
      1              FY18

Но мне нужно делать это каждый финансовый год. Я видел похожие ответы в Интернете, но ни один из них не имеет даты. Нужно ли мне использовать рекурсивный запрос?

1 Ответ

1 голос
/ 05 августа 2020

Просто добавьте 3 месяца и извлеките год:

select t.*,
       year(dateadd(month, 3, date)) as fiscal_year
from t;
...