Estou com problema no group by do meu select. Já coloquei todos os campos nele e nada…
O meu select é :
SELECT pc.id, l.datalanc,sum(ht.valor) as valor,codigo_conta || ' ' || descricao as contacontabil
FROM lancamento l
INNER JOIN historicotransacao ht ON ht.id_lancamento = l.id
INNER JOIN planocontas pc ON pc.id = ht.id_contacontabil
ORDER BY pc.codigo_conta ASC
GROUP BY id;
O erro que aparece é :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘GROUP BY id’ at line 6
Podem me ajudar?
Assim também dá erro…
Já tentei…
entao o problema é no sum
faz assim
(select sum(valor) from historicotransacao where id_contacontabil = pc.id group by pc.id) as valor
no lugar de sum
e tira o INNER JOIN historicotransacao ht ON ht.id_lancamento = l.id e o group by
O order by não deve ser a última instrução?!
São dois erros, o primeiro já mencionado que é o ORDER BY tem que ser o último.
O segundo é que você tem que agrupar todos os atributos da projeção que não esta na função de agregação.
Errado
SELECT pc.id, l.datalanc,sum(ht.valor) as valor,codigo_conta || ' ' || descricao as contacontabil
FROM lancamento l
INNER JOIN historicotransacao ht ON ht.id_lancamento = l.id
INNER JOIN planocontas pc ON pc.id = ht.id_contacontabil
ORDER BY pc.codigo_conta ASC
GROUP BY id;
Correta com base na sua consulta
SELECT pc.id, l.datalanc,sum(ht.valor) as valor,codigo_conta || ' ' || descricao as contacontabil
FROM lancamento l
INNER JOIN historicotransacao ht ON ht.id_lancamento = l.id
INNER JOIN planocontas pc ON pc.id = ht.id_contacontabil
GROUP BY id, datalanc, codigo_conta, descricao
ORDER BY pc.codigo_conta ASC
Obrigada pelas sugestões de correção.