2010-04-07 52 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)