6

我有一个数据库,假设有两列(service_date 和 invoice_amount)。我想创建一个 SQL 查询,用于检索和分组每个财政年度(7 月至 6 月)的数据。

我有两年的数据,所以是两个财政年度(即 2 个结果)。

我知道我可以通过创建按月分组的 SQL 查询手动执行此操作,然后通过 PHP 运行数据以创建财政年度数据,但我宁愿使用 SQL 查询。

欢迎所有想法。

谢谢

4

3 回答 3

26
SELECT
   CASE WHEN MONTH(service_date)>=7 THEN
          concat(YEAR(service_date), '-',YEAR(service_date)+1)
   ELSE concat(YEAR(service_date)-1,'-', YEAR(service_date)) END AS financial_year,
   SUM(invoice_amount)
FROM mytable
GROUP BY financial_year

产生如下所示的o / p

financial_year   invoice_amount
2007-2008        10000.00
2008-2009        15000.00
2009-2010        20000.00
于 2010-04-07T11:17:09.330 回答
2

这在 MSSQL 中对我有用。希望它在 MySQL 中对你有用

SELECT
   CASE WHEN MONTH(service_date)>=7 THEN
           YEAR(service_date)+1 
   ELSE YEAR(service_date) END AS financial_year,
   SUM(invoice_amount)
FROM mytable
GROUP BY
   CASE WHEN MONTH(service_date)>=7 THEN
           YEAR(service_date)+1 
   ELSE YEAR(service_date)
于 2010-04-07T10:49:07.867 回答
1
to get data from April to March  ---

SELECT
CASE 
    WHEN MONTH(application_receiving_date)>=4 
    THEN concat(YEAR(application_receiving_date), '-',YEAR(application_receiving_date)+1) 
    ELSE concat(YEAR(application_receiving_date)-1,'-', YEAR(application_receiving_date)) 
END AS app_year,
from table_name 
GROUP BY app_year  
于 2020-01-06T08:43:26.483 回答