SUM postgres не так, как ожидалось - PullRequest
0 голосов
/ 09 апреля 2020

после запроса я хотел бы получить СУММУ account_move_line.balance AS ammounteur, когда account_id, partner_id, invoice_id и account_account.code были =

SELECT account_move_line.name,account_move_line.account_id,account_move_line.partner_id,account_move_line.invoice_id,account_move_line.journal_id,
            CASE 
                WHEN account_account.code LIKE '40%%'
                    THEN '400000'
                WHEN account_account.code LIKE '44%%'
                    THEN '440000'
                ELSE account_account.code    
            END as ACCOUNTGL,
CASE
WHEN account_account.code = '702000' 
THEN SUM(account_move_line.balance)
ELSE (round(account_move_line.balance, 2))
            END as AMOUNTEUR
FROM public.account_move_line
JOIN account_account ON (account_account.id = account_move_line.account_id)
WHERE (account_move_line.date BETWEEN '2020-03-01' AND '2020-03-31')
GROUP BY account_move_line.account_id,account_move_line.partner_id,account_move_line.invoice_id,account_move_line.journal_id,account_account.code,account_move_line.balance,account_move_line.name ORDER BY account_move_line.account_id,account_move_line.invoice_id; 

Результат у меня

NAME                        account_id  Partner_id  Invoice_id J_id accountgl   amounteur
"Taxe led"                  186         2476        1883        1   "702000"    -0.83
"Taxe eclairage"            186         2476        1883        1   "702000"    -0.11
"Taxe gros et petit blanc"  186         3090        1884        1   "702000"    -0.83
"Taxe eclairage"            186         2077        1885        1   "702000"     0.25
"Taxe eclairage"            186         2077        1887        1   "702000"    -0.25
"Taxe eclairage"            186         2077        1888        1   "702000"    -0.02
"Taxe led"                  186         2481        1916        1   "702000"    -0.83
"Taxe eclairage"            186         2481        1916        1   "702000"    -0.52 

Я ожидал

NAME                        account_id  Partner_id  Invoice_id J_id accountgl   amounteur
                            186         2476        1883       1    "702000"    -0.94
"Taxe gros et petit blanc"  186         3090        1884       1    "702000"    -0.83
"Taxe eclairage"            186         2077        1885       1    "702000"     0.25
"Taxe eclairage"            186         2077        1887       1    "702000"    -0.25
"Taxe eclairage"            186         2077        1888       1    "702000"    -0.02
                            186         2481        1916       1    "702000"    -1.35

Спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Я предполагаю, но, похоже, вы ожидаете, что результаты будут сгруппированы по account_id, partner_id, invoice_id и, возможно, journal_id. Но вы сказали сгруппировать по большему количеству столбцов.

account_move_line.account_id,
account_move_line.partner_id,
account_move_line.invoice_id,
account_move_line.journal_id,
account_account.code,
account_move_line.balance,
account_move_line.name

Для группировки строка должна иметь одинаковые идентификаторы учетной записи, партнера, счета-фактуры и журнала. Плюс тот же код, баланс и имя.

Сократите свою группу до четырех идентификаторов.

Это будет означать, что вы не можете выбрать некоторые столбцы, поскольку у группы есть несколько значений для этого столбца. , Например, имя. Каждая группа будет содержать несколько имен, ни одно имя не может быть выбрано.

...