[firebase-br] Ajuda com comando SUM

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


O IIF está disponível em FB >= 2.0. Pode ser substituído por:

SUM(CASE WHEN ITEDFT IS NULL THEN ITEQDE * ITEEMB ELSE 0 END)

Abs

Em 31 de outubro de 2012 16:08, André Conrado <acf em andreconrado.net>escreveu:

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



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