私は巨大なクエリを持っていますが、それが可能であれば のcase-when-statementの結果を得て比較のために使用できるかどうか疑問に思っていますか?私のCASE-STATEMENTはSelect-Statementで宣言されており、次のようになります。ORACLE:case-when-statementの結果を使用
ここで、このケースステートメントの結果を取得し、どこの部分で使用したいのですか?出来ますか?
select * from table
where table.field = (CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END)
これは、テーブルのフィールドを持つcase
のステートメントから返された値を比較します。:
正確な方法は不可能です。 'SELECT'節で' TEST'とラベル付けした(別名付きの)式を定義すると、 'WHERE'が処理されるため、同じ' SELECT'クエリの 'WHERE'節に' TEST'という名前は見えません'SELECT'の前に。 'WHERE'節で同じ(おそらく非常に長い)' CASE'式を繰り返さない場合は、サブクエリで 'TEST'を定義する方が良いでしょう。次に' WHERE'節の 'WHERE'節でそれを選択して使います。外側のクエリ(あなたは 'WITH'節でそれを行うことができます。)将来のコード管理のためにも良いでしょう。 – mathguy