estou com dificuldade para usar o comando sum() com 3 critérios diferentes.
preciso que os 4 select abaixo funcione no mesmo comando…
SELECT codigo, nome, SUM(col3) AS soma FROM form1 GROUP BY codigo;
SELECT codigo, nome, SUM(col3) AS soma1 FROM form1 where col2 = 1 GROUP BY codigo;
SELECT codigo, nome, SUM(col3) AS soma2 FROM form1 where col2 = 2 GROUP BY codigo;
SELECT codigo, nome, SUM(col3) AS soma3 FROM form1 where col2 = 3 GROUP BY codigo;
SELECT
s1.codigo, s1.nome, SUM(s1.col3) AS soma1,
s2.codigo, s2.nome, SUM(s2.col3) AS soma2,
s3.codigo, s3.nome, SUM(s3.col3) AS soma3,
s4.codigo, s4.nome, SUM(s4.col3) AS soma4
FROM
form1 AS s1,
form1 AS s2,
form1 AS s3,
form1 AS s4
WHERE
s2.col2 = 1
AND s3.col2 = 2
AND s4.col2 = 3
GROUP BY
codigo,
nome;
Não to lembrado se o group by vai funcionar dessa forma (já precisei fazer uma consulta assim e segui essa ideia para funcionar, mas não lembro como fiz exatamente)
Isso vai efetuar cross joins e retornar valores completamente disparatados.
Assim deverá funcionar:
SELECT f.codigo, f.nome, sum(f.col3) as soma,
(SELECT sum(f1.col3) FROM form1 f1 where f1.codigo = f.codigo and f1.col2 = 1) as soma1,
(SELECT sum(f2.col3) FROM form1 f2 where f2.codigo = f.codigo and f2.col2 = 2) as soma2,
(SELECT sum(f3.col3) FROM form1 f3 where f3.codigo = f.codigo and f3.col2 = 3) as soma3
FROM form1 f
GROUP BY f.codigo, f.nome
boa noite
Lucas, nesse formato da erro de ambiguous da columm.
foi resolvido com o comando abaixo .
SELECT codigo, nome, SUM(col3) soma, SUM(case when col2=1 then col3 end) soma1, SUM(case when col2=2 then col3 end) soma2, SUM(case when col2=3 then col3 end) soma3 FROM form1 GROUP BY codigo,nome
pmlm
funcionou perfeitamente tb, achei outro comando que faz o mesmo que o seu…
SELECT codigo, nome, SUM(col3) soma, SUM(case when col2=1 then col3 end) soma1, SUM(case when col2=2 then col3 end) soma2, SUM(case when col2=3 then col3 end) soma3 FROM form1 GROUP BY codigo,nome