ご覧いただきありがとうございます。
memberテーブルから条件によって抽出するデータを変えるSQLを作成しています。
現状のSQL
sql
1select id, username from member where area_code in ('T') and MEMBER_CODE in (10011);
に
「destinationカラムが9だった場合status_kbnが2または3のデータのみ抽出する」
(destinationカラムが9以外の場合は従来通りの条件で検索)
という条件を加えようとしています。
sql
1select id, username from member 2where area_code in ('T') 3and MEMBER_CODE in (10011) 4AND CASE WHEN destination = '9' 5THEN (STATUS_KBN = 2) OR (STATUS_KBN = 3) ELSE 1; 6
と書いてみましたがsql developerで実行したところSTATUS_KBN = 2の=の部分に
構文エラーです。部分的に認識されたルールです。
というエラーが表示されました。
考えられる原因はどのようなものがあるでしょうか?
以下、該当テーブルのcreate文とinsert文になります。
SQL
1CREATE TABLE "member" 2 ( 3 "id" NUMBER(11,0) NOT NULL ENABLE, 4 "MEMBER_CODE" VARCHAR2(15 CHAR) NOT NULL ENABLE, 5 "area_code" VARCHAR2(3 CHAR) NOT NULL ENABLE, 6 "destination" VARCHAR2(1 CHAR) NOT NULL ENABLE, 7 "STATUS_KBN" VARCHAR2(1 CHAR) NOT NULL ENABLE, 8 "CREATE_DATE" DATE, 9 "CREATE_USER" VARCHAR2(16 CHAR), 10 "UPDATE_DATE" DATE, 11 "UPDATE_USER" VARCHAR2(16 CHAR), 12 ); 13 14Insert into member (id,MEMBER_CODE,area_code,destination,STATUS_KBN,CREATE_DATE,CREATE_USER,UPDATE_DATE,UPDATE_USER) values ('1','10011','T','9','2',to_date('21-03-30','RR-MM-DD'),'管理者',to_date('21-04-14','RR-MM-DD'),'管理者'); 15Insert into member (id,MEMBER_CODE,area_code,destination,STATUS_KBN,CREATE_DATE,CREATE_USER,UPDATE_DATE,UPDATE_USER) values ('2','10011','O','1','4',to_date('20-12-08','RR-MM-DD'),'管理者',to_date('20-12-08','RR-MM-DD'),'管理者'); 16Insert into member (id,MEMBER_CODE,area_code,destination,STATUS_KBN,CREATE_DATE,CREATE_USER,UPDATE_DATE,UPDATE_USER) values ('3','30011','U','2','1',to_date('21-03-30','RR-MM-DD'),'管理者',to_date('21-04-14','RR-MM-DD'),'管理者'); 17Insert into member (id,MEMBER_CODE,area_code,destination,STATUS_KBN,CREATE_DATE,CREATE_USER,UPDATE_DATE,UPDATE_USER) values ('4','40011','U','1','4',to_date('16-01-11','RR-MM-DD'),'管理者',to_date('16-01-11','RR-MM-DD'),'管理者'); 18Insert into member (id,MEMBER_CODE,area_code,destination,STATUS_KBN,CREATE_DATE,CREATE_USER,UPDATE_DATE,UPDATE_USER) values ('5','50011','O','1','3',to_date('16-01-11','RR-MM-DD'),'管理者',to_date('16-01-11','RR-MM-DD'),'管理者'); 19
回答2件
あなたの回答
tips
プレビュー