定義済みの変数に従ってwhere句で選択を実行する必要があるクエリを作成しようとしています。where句がある場合のケース
私のスクリプトは次のようになります。私はまさにやりたい何
def schd_yn ='Y';
def clin_schd = '1,2';
CREATE TABLE TEMP_SUBOPT AS
SELECT *
FROM P112921.SCHEDULE_DATA
WHERE clin_sch IN (CASE WHEN '&schd_yn.' = 'Y'
THEN &clin_schd.
ELSE clin_sch
END)
;
がschd_ynがNに設定された場合には、私のソースからすべてのデータを取る、とにclin_schdで定義された値のみを取ることですcase schd_ynがYに設定されます。
このソリューションは、clin_schedに1つの値しか持たない場合にうまく機能します。
これらの組み合わせはうまく機能:
def schd_yn='Y'; //takes only clin_sch=1
def clin_schd='1';
def schd_yn='N'; //takes everything as expected
def clin_schd='1';
これらの組み合わせが正常に動作し、エラーが発生しません:
def schd_yn='Y';
def clin_schd='1,2';
def schd_yn='N';
def clin_schd='1,2';
は、誰かがこの作業を行う方法を知っていますか?
はありがとう
それは 'WHERE'句で代わりに' case'式の 'AND' /' OR'を使用することが一般的に良いでしょう。 – jarlh
SQLでカンマ区切りの値を使用しないでください。それはあなたに多くのトラブルを引き起こすだけです。 – jarlh
@a_horse_with_no_name:sqldeveloperタグには削除してはいけません。このスクリプトはSQL Developer固有のものだからです。もう一度タグを追加しました。 –