8

私の要件は、複雑なクエリから数値を取得し、num = desiredNum かどうかを確認することです。

desiredNum と等しい場合は、別の一連の選択ステートメントを実行する必要があります。

関数を書くのではなく、クエリでこれを達成する方法はありますか?

例えば:

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

これは可能ですか??

4

2 に答える 2

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

valとval1は両方とも同じテーブルからのものであるという意味だと思いますが、val = 2の場合は、代わりにval1を使用します。実際に2つのテーブルがあり、両方にそれぞれ1つのレコードしかない場合は、

select
    case when val=2
    then (select val1 from table1)
    else 'false'
    end
from table
于 2011-03-04T04:41:55.603 に答える
0

私は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です。Valuesテーブルクエリが2を返す場合は、table2の結果から結果を取得します。それ以外の場合は、テーブル1の結果を取得します。

乾杯、ダニエル

于 2011-03-04T04:41:42.537 に答える