SQL-запрос для получения данных финансового года, сгруппированных по году - PullRequest
5 голосов
/ 07 апреля 2010

У меня есть база данных с двумя столбцами (service_date & invoice_amount). Я хотел бы создать запрос SQL, который будет извлекать и группировать данные для каждого финансового года (с июля по июнь).

У меня есть данные за два года, то есть два финансовых года (т.е. 2 результата).

Я знаю, что могу сделать это вручную, создав SQL-запрос для группировки по месяцам, затем запустив данные через PHP для создания данных финансового года, но я бы предпочел SQL-запрос.

Все идеи приветствуются.

Спасибо

Ответы [ 2 ]

20 голосов
/ 07 апреля 2010
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

, которые производят о / п, как показано ниже

financial_year   invoice_amount
2007-2008        10000.00
2008-2009        15000.00
2009-2010        20000.00
1 голос
/ 07 апреля 2010

Это работает для меня в 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)
...