Как сгруппировать по двум полям? - PullRequest
0 голосов
/ 06 июля 2019

У меня есть следующая таблица:

listId | accountId | amount 
1        1           20
1        1           20
2        2           30
2        2           30

Мне нужно SUM(amount) и сгруппировать по listId, accountId, чтобы получить результат:

 listId | accountId | amount | 
 1        1           40
 2        2           60

Но у меня это не работает: SUM(amount) ... GROUP BY listId, accountId

Мой полный запрос:

select `account_transactions`.*, 
`enterprise_invoces`.*, 
ABS(SUM(IF(AT_amount>0, AT_amount, 0))) AS debit, 
ABS(SUM(IF(AT_amount<0, AT_amount, 0))) AS credit 
from `account_transactions` 
inner join `enterprise_invoces` 
on `enterprise_invoces`.`AC_id` = `account_transactions`.`AT_code` 

where `AT_createuser` = 15 and 
date(`AT_transactiondatetime`) >= 2019-04-11 and
date(`AT_transactiondatetime`) <= 2019-07-29 and 
`AC_code` >= 601 and
`AC_code` <= 761 
group by `enterprise_invoces`.`AC_id`, `account_transactions.AT_transactionficheno` 
order by `AT_transactiondatetime` desc

1 Ответ

1 голос
/ 06 июля 2019

Ваш запрос на выборку не должен иметь других столбцов и должен содержать только столбцы, упомянутые в группе, а также столбец, который необходимо агрегировать. Поэтому запрос должен быть таким, как показано ниже.

выберите enterprise_invoces. AC_id, account_transactions.AT_transactionficheno, ABS (SUM (IF (AT_amount> 0, AT_amount, 0))) AS дебет, ABS (SUM (IF (AT_amount <0, AT_amount, 0))) AS кредит от <code>account_transactions внутреннее соединение enterprise_invoces enterprise_invoces. AC_id = account_transactions. AT_code где AT_createuser = 15 и дата (AT_transactiondatetime)> = 2019-04-11 и дата (AT_transactiondatetime) <= 2019-07-29 и <code>AC_code> = 601 и AC_code <= 761 сгруппировать по <code>enterprise_invoces. AC_id, account_transactions.AT_transactionficheno заказать по AT_transactiondatetime desc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...