[firebase-br] Case na Instrucao SQL - II

Andrei Luís compuvale.software em gmail.com
Ter Abr 18 10:25:27 -03 2006


Savio,

Do jeito que você quer não dá, pois o case faz a análise da condição e
"cria" um campo virtual, mas da forma como você colocou, seria criado um
campo diferente para cada condição.

Uma forma para você fazer seria criar diversos cases:

CASE
   WHEN P.TIPO='V' AND P.VENDA='V' THEN SUM(P.TOTAL)
END AS "TOTAL_VAREJO A VISTA",
CASE
   WHEN P.TIPO='V' AND P.VENDA='P' THEN SUM(P.TOTAL)
END AS "TOTAL_VAREJO A PRAZO",
CASE
   WHEN P.TIPO='A' AND P.VENDA='V' THEN SUM(P.TOTAL)
END AS "TOTAL_ATACADO A VISTA"
CASE
   WHEN P.TIPO='A' AND P.VENDA='P' THEN SUM(P.TOTAL)
END AS "TOTAL_ATACADO A PRAZO"

Você deve usar aspas duplas e não simples no AS "NOME_DO_CAMPO".

Lembre-se também de usar group by, caso contrário o SUM não funciona


[]
Andrei

Em 18/04/06, savio_assuncao em ibest.com.br <savio_assuncao em ibest.com.br>
escreveu:
>
> ola, Pessoal
>
>   Alo Kleber e Andrei , obrigado pelas sugestoes ;-)
>
>   Mas infelizmente nuam funcionou , to postando aqui a estrututa pra ver
> se facilita a compreensao, procuro uma solucao em SLQ pra naum ter que ficar
> 'Varrendo" a tabela :-(
>
> SELECT P.ID_ORCAM,P.ID_CLIENTE,P.ID_FUNCIO,P.DTORC,P.TOTAL,');
> P.DESCE,P.TIPO,P.VENDA,P.EXTORNO,P.VENDIDO,P.DEVOLUCAO,P.QITENS,
> P.ID_PLANOS,');
> CASE
> WHEN P.VENDIDO='N' THEN' 'ABERTO'
> WHEN P.VENDIDO='F' THEN  'FATURADO'
> WHEN P.VENDIDO='S' THEN  ' FECHADO'
> END,
>
> CASE
> WHEN P.TIPO='V' AND P.VENDA='V' THEN 'VAREJO A VISTA'
> WHEN P.TIPO='V' AND P.VENDA='P' THEN 'VAREJO A PRAZO'
> WHEN P.TIPO='A' AND P.VENDA='V' THEN ATACADO A VISTA'
> WHEN P.TIPO='A' AND P.VENDA='P' THEN 'ATACADO A PRAZO'
> END,
> FROM TBORCAM P
>
> quero poder totalizar em cada situacao do segundo case :
>
> CASE
> WHEN P.TIPO='V' AND P.VENDA='V' THEN SUM(P.TOTAL) AS 'TOTAL_VAREJO A
> VISTA'
> WHEN P.TIPO='V' AND P.VENDA='P' THEN SUM(P.TOTAL) AS 'TOTAL_VAREJO A
> PRAZO'
> WHEN P.TIPO='A' AND P.VENDA='V' THEN SUM(P.TOTAL) AS 'TOTAL_ATACADO A
> VISTA'
> WHEN P.TIPO='A' AND P.VENDA='P' THEN SUM(P.TOTAL) AS 'TOTAL_ATACADO A
> PRAZO'
> END,
>
> é isso, + uma vez obrigado pela atençao dispensada.
>
> [ ]'
> Savio Assuncao
> D6+dbExpress+FB1.5 +CL10
>



Mais detalhes sobre a lista de discussão lista