[firebase-br] Dificuldade com union e group by
Gabriel Hilbig
ghilbig em bol.com.br
Sex Dez 14 12:49:42 -03 2007
O Correto é
select c.codigo, c.desc, sum(i.qtd * i.valor) as "valor"
from item i
join cliente c on c.codigo = i.codcli
union
select c.codigo, c.desc, sum(s.qtd * s.valor) as "valor"
from item_servico s
join cliente c on c.codigo = s.codcli
union
select c.codigo, c.desc, sum(e.qtd * e.valor) as "valor"
from item_escalonamento e
join cliente c on c.codigo = e.codcli
group by 1,2
Group by deve ocorrer apenas uma vez no final da SQL.
Funciona igual para ORDER BY
--
Gabriel Hilbig
www.mgsystem.inf.br
"Wagner Porto"
<wagner.porto em itelefonica.com.br> escreveu na
mensagem news:476292AC.4020107 em itelefonica.com.br...
Preciso de ajuda para realizar um busca com calculos de
qtd * valor em 3 tabelas diferentes, porém não estou conseguindo agrupar.
Ex.
select c.codigo, c.desc, sum(i.qtd * i.valor) as "valor"
from item i
join cliente c on c.codigo = i.codcli
group by 1,2
union
select c.codigo, c.desc, sum(s.qtd * s.valor) as "valor"
from item_servico s
join cliente c on c.codigo = s.codcli
group by 1,2
union
select c.codigo, c.desc, sum(e.qtd * e.valor) as "valor"
from item_escalonamento e
join cliente c on c.codigo = e.codcli
group by 1,2
essa consulta deveria ter o seguinte resultado
1 - cliente 0001 - 100,00
2 - cliente 0002 - 105,00
3 - cliente 0003 - 250,00
porém ela me retorna
1 - cliente 0001 - 40,00
1 - cliente 0001 - 60,00
2 - cliente 0002 - 10,00
2 - cliente 0002 - 95,00
3 - cliente 0003 - 250,00
3 - cliente 0003 - 50,00
se fizer com union all, aparece somente o ultimo registro de cada cliente
1 - cliente 0001 - 60,00
2 - cliente 0002 - 95,00
3 - cliente 0003 - 50,00
Desde já agradeço a atenção.
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista