如何在SQL中汇总按财务年度分组的数据

时间:2018-12-03 12:33:52

标签: sql sql-server datetime group-by

我的财政年度介于7月1日至6月30日之间,例如2018-07-01至2019-06-30

我有以下数据。

Data

我想在SQL中按财务年度汇总费率列 请帮忙。

3 个答案:

答案 0 :(得分:1)

您可以通过减去或增加六个月来获得财政年度。

在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-具有讽刺意味的是,它不适用于大多数数据库。日期函数众所周知是特定于数据库的,因此确切的代码可能在您的数据库中有所不同(在我撰写本文时未指定)。

答案 1 :(得分:0)

If I correctly understood what you're looking for, this should work for you.

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 

答案 2 :(得分:0)

对于任何给定日期,您都可以像这样计算会计年度的最后日期

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

For example

| 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 |

您只需按此日期分组即可获取每个财政年度的数据。