実現したいこと
table2またはtable3に存在するデータを出力したいです。
具体的には、下記の条件で出力します。
table2、table3ともに存在する場合:table2のデータ
table2にのみ存在する場合:table2のデータ
table3にのみ存在する場合:table3のデータ
table1のnoはvarchar2型です。
また、table1のnameはnvarchar2型、table2,3のnoはvarchar2型です。
noは、主キーで、前ゼロ8桁の半角数値が入ります。
発生している問題・分からないこと
SQLを作成したのですが、ORDER BY句でORA-01722が発生しているようです。
(ORDER BYの行を消したら実行できる)
原因を教えていただけますでしょうか。
よろしくお願いします。
エラーメッセージ
error
1ORA-01722: 数値が無効です
該当のソースコード
SQL
1SELECT t1.番号,t1.氏名, CASE WHEN t2.A IS NULL THEN t3.B ELSE t2.A AS 結果 2FROM 3 ( SELECT no AS 番号, name AS 氏名 FROM Table1 where flg=1) t1 4LEFT OUTER JOIN 5 ( SELECT no, A FROM Table2 WHERE no IS NOT NULL) t2 6ON t1.no=t2.no 7LEFT OUTER JOIN 8 ( SELECT no, B FROM Table3 WHERE no IS NOT NULL) t3 9ON t1.no=t3.no 10WHERE t2.A IS NOT NULL OR t2.B IS NOT NULL 11ORDER BY t1.番号 12;
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・下記が似ている事象だと思ったが、本件にどう反映すればよいかわからない
https://stackoverflow.com/questions/50715524/ora-01722-when-trying-to-use-order-by
・SELECT文のCASEが悪さしてると思い、コメントアウトしたが同じくORA-01722だった
・「ORDER BY to_number(t1.番号)」としても同じくORA-01722だった
補足
実行環境はSQL Developerです。
回答1件
あなたの回答
tips
プレビュー