2015-04-10 2 views
2

У меня есть таблица (имя = расход) следующим образом:Дело MySQL с группой по

id amount date 
1 -1687 2014-01-02 00:00:00.0 
2 11000 2014-01-02 00:00:00.0 
3 1500 2014-01-03 00:00:00.0 
4 -3800 2014-01-03 00:00:00.0 
5 119500 2014-01-01 00:00:00.0 
6 -2999 2014-01-04 00:00:00.0 
7 5972 2014-01-04 00:00:00.0 
.. 
8 7208 2014-12-31 00:00:00.0 

Я могу получить доход и сгруппировать его по месяцам примерно так:

SELECT 
     SUM(amount), 
     date 
FROM expense 
WHERE YEAR(now()) = YEAR(date) AND amount>0 
GROUP BY MONTH(date); 

Я могу получить счет и сгруппировать его по месяцам примерно так:

SELECT 
     SUM(amount), 
     date 
FROM expense 
WHERE YEAR(now()) = YEAR(date) AND amount<=0 
GROUP BY MONTH(date); 

Я хочу знать, есть ли способ объединить оба эти запроса и получить как доход, так и расход и сгруппируйте его по месяцам в одном запросе.

+1

Почему как MySQL и Oracle помечены? Не помещайте продукты, которые не задействованы! – jarlh

ответ

3

Да, вам нужен саз:

SELECT 
    sum(case when amount> 0 then amount end) as income, 
    sum(case when amount<=0 then amount end) as expense, 
    date 
FROM expense 
WHERE YEAR(now()) = YEAR(date) 
GROUP BY MONTH(date); 
+0

huh .. 2 раз вокруг сумма !! Я занимался одним делом, и он не работал, ленился публиковать его здесь. Но я был рад. Спасибо @Florin Ghita –