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

Responder a