I have a database with lets assume two columns (service_date & invoice_amount). I would like to create an SQL query that would retrieve and group the data for each financial
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
which produce o/p like below
financial_year invoice_amount
2007-2008 10000.00
2008-2009 15000.00
2009-2010 20000.00
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
This works for me in MSSQL.. Hope it works for you 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)