2010-04-07 2 views
5

Ich habe eine Datenbank mit zwei Spalten annehmen können (service_date & invoice_amount). Ich möchte eine SQL-Abfrage erstellen, die die Daten für jedes Geschäftsjahr (Juli bis Juni) abrufen und gruppieren würde.SQL-Abfrage zum Abrufen von Geschäftsjahr Daten gruppiert nach dem Jahr

Ich habe zwei Jahre Daten, so dass zwei Geschäftsjahre (d. H. 2 Ergebnisse).

Ich weiß, ich kann dies manuell tun, indem Sie eine SQL-Abfrage erstellen, um nach Monat zu gruppieren, dann führen Sie die Daten über PHP, um die Geschäftsjahrdaten zu erstellen, aber ich hätte lieber eine SQL-Abfrage.

Alle Ideen willkommen.

Dank

Antwort

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 

, die wie unter

financial_year invoice_amount 
2007-2008  10000.00 
2008-2009  15000.00 
2009-2010  20000.00 
+1

Hey seine unheimliche produzieren o/p arbeitet Woher wusstest du, dass sein Tisch auch mytable hieß? Und du hast financial_year mit einem Unterstrich benutzt. – CResults

+0

ich überprüfe es mit meiner Beispieltabelle. oben Frage ist nur Beispiel, ich weiß nicht, was sein Tabellenname ist. Ich überprüfe es in meinem eigenen Browser, und ich fand es richtig, also zeige ich Probe o/p an, um jemanden zu kennen, was sie – Salil

+0

erhalten werden Danke für Ihre Hilfe Kameraden. Funktioniert perfekt. – mlevit

1

Das ist für mich in MSSQL funktioniert .. Hoffe, dass es für Sie in 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) 
Verwandte Themen