[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