私はOracleで解決しようとしているテーブルと問題のサンプルを持っています。Where文のCASE結果からのIN文Oracle
CREATE TABLE mytable (
id_field number
,status_code number
,desc1 varchar2(15)
);
INSERT INTO mytable VALUES (1,240,'desc1');
INSERT INTO mytable VALUES (2,242,'desc1');
INSERT INTO mytable VALUES (3,241,'desc1');
INSERT INTO mytable VALUES (4,244,'desc1');
INSERT INTO mytable VALUES (5,240,'desc2');
INSERT INTO mytable VALUES (6,242,'desc2');
INSERT INTO mytable VALUES (7,245,'desc2');
INSERT INTO mytable VALUES (8,246,'desc2');
INSERT INTO mytable VALUES (9,246,'desc1');
INSERT INTO mytable VALUES (10,242,'desc1');
commit;
SELECT *
FROM mytable
WHERE status_code IN CASE WHEN desc1 = 'desc1' THEN (240,242)
WHEN desc1 = 'desc2' THEN (240,245)
END
基本的に、条件ごとにステータスコードのサブセットを選択する必要があります。 私は別のステートメントでこれを解決することができましたが、私がこれをやっている実際のテーブルには複数の記述があり、約20のユニオンクエリが発生します。
私は試行したように、1つのステートメントでこれを行う方法はありますか?
おかげでそれを試してみてください。感謝のヒープ –