Boa noite,
Em 5 de junho de 2016 20:20, Jean Alysson 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
> pgbr-geral@listas.postgresql.org.br
> 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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral