2011-03-04 10 views
8

Mi requisito es obtener un número de una consulta compleja y verificar si num = desiredNum.¿Cómo usar seleccionar con if condition en oráculo?

Si es igual a desiredNum, entonces debe llevar a cabo otra serie de sentencias de selección,

¿Hay alguna manera de lograr esto en una consulta en lugar de escribir una función?

Ej:

select case when val =2 
then select val1 from table1 
else 'false' 
from (select val from table) 

Es esto posible ??

Respuesta

0

No soy 100% Entiendo lo que necesita. Sin embargo, creo que se podría utilizar una unión para hacer esto:

create table theValues (theValue integer) 
create table table1 (value1 integer) 
create table table2 (value2 integer) 


INSERT INTO theValues (thevalue) VALUES (2) 
INSERT INTO table1 (value1) VALUES (17) 
INSERT INTO table2 (value2) VALUES (8) 


SELECT value1 from table1 WHERE EXISTS (SELECT theValue from theValues WHERE theValue != 2) 
UNION ALL 
SELECT value2 from table2 WHERE EXISTS (SELECT theValue from theValues WHERE theValue = 2) 

En este caso, el "número mágico" es 2. Si la consulta de tabla theValues ​​devuelve 2, después de obtener los resultados a partir del resultado de la Tabla 2, los demás se obtiene el resultado de la tabla 1.

Saludos, Daniel

+0

Hola Daniel, cuando mi condición es satisfecha caso, debo ser capaz de ejecutar otra consulta de selección en dB .. Identificación del este posible ?? – swathy

13
select case when val=2 then val1 else val end as thevalue 
from table1 

supongo que quería decir que val y val1 son ambos de la misma mesa, pero cuando val = 2, para usar val1 lugar. Si en realidad había dos mesas, y ambos tienen sólo un registro cada uno, entonces

select 
    case when val=2 
    then (select val1 from table1) 
    else 'false' 
    end 
from table 
+0

gracias trabajado ... :) !! – swathy

Cuestiones relacionadas