2010-04-07 81 views
5

我有一个数据库,让我们假设两列(service_date & invoice_amount)。我想创建一个SQL查询来检索和分组每个财政年度(7月到6月)的数据。SQL查询检索按年分组的财务年数据

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

我知道我可以通过创建一个SQL查询来按月分组然后通过PHP运行数据来创建财务年度数据,但我宁愿有一个SQL查询。

欢迎任何想法。

感谢

回答

17
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 
+1

嘿其离奇,你怎么知道他的桌子也叫做mytable?并且您使用了带有下划线的financial_year .. – CResults 2010-04-07 11:40:43

+0

我使用示例表检查了它。上面的查询只是例子,我不知道他的表名是什么。我在我自己的浏览器中检查它,我发现它是正确的,所以我显示示例o/p知道他们会得到什么 – Salil 2010-04-07 12:15:25

+0

感谢您的帮助伴侣。完美的作品。 – mlevit 2010-04-08 21:11:42

1

这在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)