Boa noite,

Em 5 de junho de 2016 20:20, Jean Alysson <[email protected]> escreveu:

> Boa noite,
>
> preciso de ajuda no seguinte cenario:
>
> tenho uma tabela com
> idpedido - idproduto - situacao - quantidade
> 1  1 F  2
> 1  1 C  2
>
> 2  1 F  3
>
> 3  1 F  5
> 3  1 C  5
> 3  1 E  5
>
> onde F=fechado  C=cancelado   E=excluido
>
> preciso do total das quantidades vendidas, descontando o que foi cancelado
> ou excluido, mas sendo cancelado e excluido, desconta 2 vezes e fica
> errado, uso o seguinte select:
>
> select sum(
> case when situacao = 'F' then quantidade
> else
> quantidade * -1
> end) as total
> from tabela
>
> funciona quando o pedido é fechado e cancelado ou fechado e excluido, mas
> no caso do pedido 3
> ele é fechado, cancelado e excluido, ficando com valor negativo, como
> posso resolver ?
>
> Obrigado
> Jean Alysson
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



Se fizer assim não funciona:

select sum(quantidade) from tabela
where situacao='F' and
not exists(select 1 from tabela t2 where t2.idpedido=tabela.idpedido and
t2.idproduto=tabela.idproduto and t2.situacao in ('C', 'E'))

Uma outra ideia seria somar as quantidades de acordo com a situação e
utilizar como um subselect.


-- 


Marcos Thomaz da Silva
Analista de Tecnologia da Informação
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a