Em 27/05/14, Thiago<[email protected]> escreveu: > Pessoal, boa tarde. > > Desculpe pelo título mas não sabia como descrever o problema em um título. > > Seguinte, tenho as seguintes tabelas. > > tb_vendas > filial data ecf coo subtotal desconto > 1 27/05/2014 1 1 10 0 > > tb_vendas_produtos > > filial data ecf coo produto subtotal desconto > 1 27/05/2014 1 1 1 5 0 > 1 27/05/2014 1 1 2 5 0 > > Preciso fazer uma consulta cruzando as duas tabelas para me trazer o > total do cabeçalho e dos itens, para saber qual cabeçalho está com valor > diferente da soma dos itens. > > select > a.filial, > a.data, > a.ecf, > sum(a.subtotal - a.desconto) as valor_venda, > sum(b.subtotal - b.desconto) as valor_venda_produtos > from tb_vendas a > join tb_vendas_produtos b on > a.filial = b.filial and > a.data = b.data and > a.ecf = b.ecf and > a.coo = b.coo > group by > a.filial, > a.data, > a.ecf > > Nessa consulta teria o seguinte resultado: > filial data ecf valor_venda valor_venda_produtos > 1 27/05/2014 1 20 10 > > Eu precisaria trazer apenas o total por cupom, da seguinte forma: > filial data ecf valor_venda valor_venda_produtos > 1 27/05/2014 1 10 10 > > Está duplicando pois estou cruzando com a tabela de produtos. > Como eu posso obter o resultado desejado sem ter que utilizar subquery? > > Observação: preciso fazer isso em SQL Server, infelizmente, mas acredito > que aprendendo a fazer no PostgreSQL eu saiba o caminho das pedras para > fazer no SQL Server. >
Creio que não é o caso de uma junção mas sim de uma subconsulta. SELECT a.filial, a.data, a.ecf, (a.subtotal - a.desconto) AS valor_venda, (SELECT sum(b.subtotal - b.desconto) FROM tb_vendas_produtos b WHERE a.filial = b.filial AND a.data = b.data AND a.ecf = b.ecf AND a.coo = b.coo GROUP BY b.filial, b.data, b.ecf) AS valor_venda_produtos FROM tb_vendas a; Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
