Как взять совокупность данных, сгруппированных по финансовому году в SQL - PullRequest
0 голосов
/ 03 декабря 2018

Мой финансовый год - с 1 июля по 30 июня, например, 2018-07-01 и 2019-06-30

У меня есть следующие данные.

data

Я хочу объединить Оценить столбец по финансовому году в sql, пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Если я правильно понял, что вы ищете, это должно работать для вас.

SELECT 
    SUM(Rate) as Rate,
    CASE WHEN MONTH(FromDate) < 7 THEN YEAR(FromDate) - 1 ELSE YEAR(FromDate) END AS Fiscal_Year
FROM #t
GROUP BY CASE WHEN MONTH(FromDate) < 7 THEN YEAR(FromDate) - 1 ELSE YEAR(FromDate) END 
0 голосов
/ 03 декабря 2018

Для любой данной даты вы можете рассчитать последнюю дату финансового года следующим образом:

SELECT EOMONTH(date, (18 - MONTH(date)) % 12)

Например :

| date       | FY_END     |
|------------|------------|
| 2017-06-11 | 2017-06-30 |
| 2017-07-15 | 2018-06-30 |
| 2018-06-13 | 2018-06-30 |
| 2018-07-17 | 2019-06-30 |
| 2019-06-11 | 2019-06-30 |
| 2019-07-15 | 2020-06-30 |

Вы можете просто сгруппировать по этой дате, чтобы получить данные за каждый финансовый год.

0 голосов
/ 03 декабря 2018

Вы можете получить финансовый год, вычитая или добавляя шесть месяцев.

В стандарте ANSI / ISO SQL это выглядит следующим образом:

select extract(year from fromDate + interval '6 month') as fiscal_year
       sum(rate)
from t
group by extract(year from fromDate + interval '6 month');

При этом используется стандартный SQL - которыйпо иронии судьбы не работает в большинстве баз данных.Функции даты, как известно, специфичны для конкретной базы данных, поэтому точный код может отличаться в вашей базе данных (которая не указана, когда я пишу это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...