[firebase-br] CASE INVÁLIDO

Eduardo Pombo eduardo em embras.net
Sáb Jan 22 01:41:41 -03 2011


acredito que a dica no amigo Luis Augusto realmente resolva o
problema, verique apenas antes se a versao do firebird utilzado ja
suporta esta sintaxe, mas ficaria assim:



select DADOR.* from

(

SELECT
  DOA.DOACOD, DOA.DOANOM, DOA.DOASTA, DOA.DOAFIL, DOA.CATCOD,
DOA.UNICOD, CID.CIDCOD, DOA.DOAPES,
  CASE
  WHEN :p_TipoProj = 'UD' THEN COALESCE(DOA.DOAVALULTDOA, 0.00)
  WHEN :p_TipoProj = 'UA' THEN COALESCE(DOA.DOAVALULTACA, 0.00)
  WHEN :p_TipoProj = 'MD' THEN COALESCE(DOA.DOAVALMEDDOA, 0.00)
  WHEN :p_TipoProj = 'MA' THEN COALESCE(DOA.DOAVALMEDACA, 0.00)
  ELSE 0.00
  END AS ULT_VALOR
FROM
  TAB_DOADORES DOA
  LEFT JOIN TAB_LOGRADOUROS LOGR ON LOGR.LOGRCOD = DOA.DOALOGRCOD1
  LEFT JOIN TAB_BAIRROS     BAI  ON BAI.BAICOD   = LOGR.BAICOD
  LEFT JOIN TAB_CIDADES     CID  ON CID.CIDCOD   = BAI.CIDCOD
WHERE
  DOA.DOASTA =  'DES'        AND
  DOA.DOAFIL =  'RC'         AND
  DOA.UNICOD =  :p_UNICOD    AND
  CID.CIDCOD =  :p_CIDCOD    AND
  DOA.DOAPES =  :p_DOAPES    AND

)  DOADOR

WHERE  DOADOR.ULT_VALOR  BETWEEN :p_ValorInicial and :p_ValorFinal

ORDER BY
  DOADOR.DOADATRCA


Espero ter ajudado






Em 20 de janeiro de 2011 10:14, Reinaldo <diasmartins em gmail.com> escreveu:
> Olá Pessoal estou com um problema, que está ocorrendo um erro na execucao do
> select abaixo.
>
> Eu estou criando um campo através do case, e preciso utiliza-lo no WHERE
>
> Alguém tem alguma dica de como resolver isso?
>
> Att.
>
> Reinaldo
>
>
> SELECT
>   DOA.DOACOD, DOA.DOANOM, DOA.DOASTA, DOA.DOAFIL, DOA.CATCOD, DOA.UNICOD,
> CID.CIDCOD, DOA.DOAPES,
>   CASE
>   WHEN :p_TipoProj = 'UD' THEN COALESCE(DOA.DOAVALULTDOA, 0.00)
>   WHEN :p_TipoProj = 'UA' THEN COALESCE(DOA.DOAVALULTACA, 0.00)
>   WHEN :p_TipoProj = 'MD' THEN COALESCE(DOA.DOAVALMEDDOA, 0.00)
>   WHEN :p_TipoProj = 'MA' THEN COALESCE(DOA.DOAVALMEDACA, 0.00)
>   ELSE 0.00
>   END AS ULT_VALOR
> FROM
>   TAB_DOADORES DOA
>   LEFT JOIN TAB_LOGRADOUROS LOGR ON LOGR.LOGRCOD = DOA.DOALOGRCOD1
>   LEFT JOIN TAB_BAIRROS     BAI  ON BAI.BAICOD   = LOGR.BAICOD
>   LEFT JOIN TAB_CIDADES     CID  ON CID.CIDCOD   = BAI.CIDCOD
> WHERE
>   DOA.DOASTA =  'DES'        AND
>   DOA.DOAFIL =  'RC'         AND
>   DOA.UNICOD =  :p_UNICOD    AND
>   CID.CIDCOD =  :p_CIDCOD    AND
>   DOA.DOAPES =  :p_DOAPES    AND
> ---Linha com erro
> -----------------------------------------------------------
>   ULT_VALOR  BETWEEN :p_ValorInicial and :p_ValorFinal
> -----------------------------------------------------------
> ORDER BY
>   DOA.DOADATRCA
>
> ______________________________________________
> 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
>



-- 

Atenciosamente

José Eduardo Pombo de Barros
Gerente de Manutenção de Sistemas




Mais detalhes sobre a lista de discussão lista