[firebase-br] Ajuda com comando SUM

André Conrado acf em andreconrado.net
Qua Out 31 16:08:34 -03 2012


Para evitar os dois SELECTs vc tb pode fazer assim:

SELECT SUM( IIF( ITEDFT IS NULL, ITEQDE * ITEEMB, 0)) AS QDEABERTO,
SUM( IIF( ITEDFT IS NULL, (ITEQDE * ITEEMB)* MODPRE, 0)) AS VLRABERTO,
SUM( IIF( ITEDFT IS NOT NULL , ITEQDE * ITEEMB, 0) AS QDEBAIXADO,
SUM( IIF( ITEDFT IS NOT NULL ,  (ITEQDE * ITEEMB)*MODPRE, 0)) AS VLRBAIXADO
FROM PEDITEM
WHERE (PEDCOD =  :PEDCOD) AND   (ITEDCN IS NULL)

Abs

Em 30 de outubro de 2012 20:50, Sandro Souza
<escovadordebits em gmail.com>escreveu:

> Bom dia/tarde/noite Fausto.
>
> Faço aqui a minha humilde sugestão.
>
> As suas duas consultas originais são as seguinte:
>
> As quantidades e valores em aberto:
>
> *SELECT SUM(ITEQDE * ITEEMB) AS QDEABERTO,
> SUM((ITEQDE * ITEEMB)* MODPRE) AS VLRABERTO
> FROM PEDITEM
> WHERE(PEDCOD =  :PEDCOD)
> AND   (ITEDFT IS NULL)
> AND   (ITEDCN IS NULL)
> *
> E as quantidades e valores baixados:
>
> *SELECT SUM(ITEQDE * ITEEMB) AS QDEBAIXADO,
> SUM((ITEQDE * ITEEMB)*MODPRE) AS VLRBAIXADO
> FROM PEDITEM
> WHERE (PEDCOD = :PEDCOD)
>   AND (ITEDFT IS NOT NULL)
> AND(ITEDCN IS NULL)
> *
> Agora vamos transformá-los em "tabelas virtuais", ou seja, colocá-las no
> FROM de um SELECT mais externo:
>
> *SELECT
>   A.QDEABERTO,
>   A.VLRABERTO,
>   B.QDEBAIXADO,
>   B.VLRBAIXADO
> FROM
> ( SELECT
>     SUM(ITEQDE * ITEEMB)QDEABERTO,
>     SUM((ITEQDE * ITEEMB)* MODPRE)VLRABERTO
>   FROM
>     PEDITEM
>   WHERE
>     (PEDCOD =  :PEDCOD)AND
>     (ITEDFT IS NULL)AND
>     (ITEDCN IS NULL)) A,
> ( SELECT
>     SUM(ITEQDE * ITEEMB)QDEBAIXADO,
>     SUM((ITEQDE * ITEEMB)*MODPRE)VLRBAIXADO
>   FROM
>     PEDITEM
>   WHERE
>     (PEDCOD = :PEDCOD)AND
>     (ITEDFT IS NOT NULL)AND
>     (ITEDCN IS NULL)) B
> *
> Agora é só testar.
>
> Espero ter ajudado mais que atrapalhado. :D
>
>
> Em 30 de outubro de 2012 16:48, Fausto <fausto.s.a em uol.com.br> escreveu:
>
> > Pessoal, tenho um projeto, onde em determinada consulta, necessito
> > retornaros seguinte valores da tabela de itens de pedidos:
> > Quantidades em Aberto
> > Valores em Aberto
> > Quantidade Baixada
> > Valores baixados
> >
> > Hoje tenho duas Sqls para fazer essa soma, e gostaria de ter isso em uma
> > sql, abaixo mostro o conteúdo decada uma.
> >
> > Para somar os valores e quantidades em aberto:
> > SELECT SUM(ITEQDE * ITEEMB) AS QDEABERTO,
> > SUM((ITEQDE * ITEEMB)* MODPRE) AS VLRABERTO
> > FROM PEDITEM
> > WHERE(PEDCOD =  :PEDCOD)
> > AND   (ITEDFT IS NULL)
> > AND   (ITEDCN IS NULL)
> >
> > Para somar os valores e quantidades Baixados:
> > SELECT SUM(ITEQDE * ITEEMB) AS QDEBAIXADO,
> > SUM((ITEQDE * ITEEMB)*MODPRE) AS VLRBAIXADO
> > FROM PEDITEM
> > WHERE (PEDCOD = :PEDCOD)
> >   AND (ITEDFT IS NOT NULL)
> > AND(ITEDCN IS NULL)
> >
> > Estou tentando implementar um case when no sum, mas confesso já estou com
> > os miolos cozinhando...
> > Se alguém puder me dar uma dica fico desde já agradecido.
> >
> > --
> > Fausto Alves
> > Skype:faustoalves
> > msn:faustoalves em com4.com.br
> > Franca-SP
> > Enviado pelo Mozilla Thunderbird
> > http://br.mozdev.org/**thunderbird <http://br.mozdev.org/thunderbird>
> >
> > ______________________________**________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/**artigo.php?id=1107<
> http://www.firebase.com.br/fb/artigo.php?id=1107>
> > Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<
> http://firebase.com.br/pesquisa>
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Um Abraço,
André Conrado.

055 21 8840-6232 - Claro
e-mail: acf em andreconrado.net
http://andreconrado.net



Mais detalhes sobre a lista de discussão lista