2014-05-27 14:24 GMT-03:00 Thiago <[email protected]>:

> 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.
>

Nesse caso basta não agregar as colunas de interesse da tabela de vendas:

    SELECT
      a.filial,
      a.data,
      a.ecf,
      *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,

*a.subtotal,*
*      a.desconto*;

Em versões mais recentes (se não me engano 9.1+), você nem precisa
adicionar todas essas colunas na cláusula GROUP BY, basta adicionar a chave
primária da tabela tb_vendas (chuto eu que sejam (filial, data, ecf, coo)).

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a