Re: [pgbr-geral] Dúvida em select

2016-06-05 Por tôpico Marcos Thomaz
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

[pgbr-geral] Dúvida em select

2016-06-05 Por tôpico Jean Alysson
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