Oracle - WHERE CON CONDICIONAL

 
Vista:
sin imagen de perfil

WHERE CON CONDICIONAL

Publicado por Diego (7 intervenciones) el 15/04/2016 18:15:53
Buen dia,


tengo una duda sobre poner un condicional en en WHERE, necesito obtener un dato que depende del valor de dos columas, es decir si la columa 1 vale 0 entonces el dato se traera con el valor de la columa dos.

estaba pensando en algo asi

1
WHERE e.CODEMPLEADO = v.CODEMPLEADO  AND (CASE WHEN vd.CODENCARGO IS NULL THEN vd.CODCARGOEMPRESA = ce.CODCARGOEMPRESA ELSE vd.CODENCARGO = ce.CODCARGOEMPRESA END) AND ce.CODCARGO = c.CODCARGO AND  v.CODVINCULACIONESTADO = 1

realmente no se que tan descabellado es lo que escribi ahi en esa sentencia, obviamente no me dio, pero todo depende de vd.CODENCARGO pues si es null entonces la comparacion debe hacerse entre vd.CODCARGOEMPRESA = ce.CODCARGOEMPRESA y si no es null entonces vd.CODENCARGO = ce.CODCARGOEMPRESA

agradezco cualquier ayuda posible.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

WHERE CON CONDICIONAL

Publicado por Rafael (328 intervenciones) el 18/04/2016 14:08:32
Creo que seria mejor algo tal que asi:

1
2
3
4
WHERE e.CODEMPLEADO = v.CODEMPLEADO
AND ce.CODCARGO = c.CODCARGO
AND  v.CODVINCULACIONESTADO = 1
AND ce.CODCARGOEMPRESA = NVL(vd.CODENCARGO, vd.CODCARGOEMPRESA)

Ya que la funcion NVL en Oracle evalua si el valor es nulo lo sustituye por el segundo valor, asi pues si es NULL, evalua contra CODCARGOEMPRESA, si no es NULL evalua con CODENCARGO


Saludos.

Pd. Si la información te sirve a mi me sirve un +1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

WHERE CON CONDICIONAL

Publicado por Diego (7 intervenciones) el 18/04/2016 15:08:41
Muchas gracias rafael ya mismo hago la prueba, gracias por contestar =D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar