Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alan Soares

Case no Where

Recommended Posts

Galera não tenho muito conhecimento do oracle, então gostaria que vcs me ajudassem em montar um select diferenciado..

 

Gostaria de usar o CASE dentro do WHERE, não sei se isso é possivel.. a versão que uso é 9i.

 

Se alguem poder me ajudar agradeço desde já....

 

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso seguido o case, mas não no where

não me pergunte porque mas utilizo o decode.

mas é a mesma coisa

 

uns acham mais prático o case, outros o decode.

pode seguir o exemplo do Motta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Numa regra complicada o DECODE não faz, tipo.

 

Sexo masculino e salário entre 1000 e 1234 reais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal tava tentando usar da seguinte forma:

 

where ..... algumas condições antes e depois o case

 

CASE WHEN VarCom_ou_Tec = 0 THEN

AND (AVP.TIPO_CAUSAL_ID_ATUAL = VarTipoCausal OR NVL(VarTipoCausal, 0) = 0)

 

WHEN VarCom_ou_Tec = 1 THEN

AND (AVP.TIPO_CAUSAL_ID_ATUAL IN (SELECT TIPO_CAUSAL_ID FROM CAD_TIPOS_CAUSAIS WHERE CONSIDERAR IS NULL))

 

WHEN VarCom_ou_Tec = 2 THEN

AND (AVP.TIPO_CAUSAL_ID_ATUAL IN (SELECT TIPO_CAUSAL_ID FROM CAD_TIPOS_CAUSAIS WHERE CONSIDERAR IS NOT NULL)

 

END

 

 

O erro é este...

 

PL/SQL: ORA-00907: missing right parenthesis

Compartilhar este post


Link para o post
Compartilhar em outros sites

CASE WHEN VarCom_ou_Tec = 0 THEN
'AND (AVP.TIPO_CAUSAL_ID_ATUAL = VarTipoCausal OR NVL(VarTipoCausal, 0) = 0)'
ELSE
(CASE WHEN VarCom_ou_Tec = 1 THEN
'AND (AVP.TIPO_CAUSAL_ID_ATUAL IN (SELECT TIPO_CAUSAL_ID FROM CAD_TIPOS_CAUSAIS WHERE CONSIDERAR IS NULL))'
ELSE
(CASE WHEN VarCom_ou_Tec = 2 THEN
'AND (AVP.TIPO_CAUSAL_ID_ATUAL IN (SELECT TIPO_CAUSAL_ID FROM CAD_TIPOS_CAUSAIS WHERE CONSIDERAR IS NOT NULL))'
END)END) alias
tenta assim

 

PL/SQL: ORA-00907: missing right parenthesis

quanto ao erro, na instrução quando tec = 2, você abria o parenteses duas vezes e fechava uma

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.