Как использовать select с условием в Oracle? - PullRequest
8 голосов
/ 04 марта 2011

Мое требование состоит в том, чтобы получить число из сложного запроса и проверить, если num = requiredNum.

Если оно равно требуемомуNum, тогда я должен выполнить другой набор операторов выбора,

Есть ли способ, которым я могу достичь этого в запросе, а не писать функцию?

Например:

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

Возможно ли это?

Ответы [ 2 ]

13 голосов
/ 04 марта 2011
select case when val=2 then val1 else val end as thevalue
from table1

Полагаю, вы имели в виду, что val и val1 оба из одной таблицы, но когда val = 2, вместо этого следует использовать val1. Если у вас на самом деле было две таблицы, и у каждой из них только одна запись каждая, то

select
    case when val=2
    then (select val1 from table1)
    else 'false'
    end
from table
0 голосов
/ 04 марта 2011

Я не на 100% понимаю, что тебе нужно.Но я думаю, что вы могли бы использовать объединение, чтобы сделать это:

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)

В этом случае «магическое число» равно 2. Если запрос таблицы theValues ​​возвращает 2, то вы получите результаты из результата из таблицы 2иначе вы получите результат из таблицы 1.

Ура, Даниэль

...