Oracle SQLクエリ、CASEセクションでフィールドを連結
質問
現在、複数のテーブルからSQL挿入ステートメントを生成しています。生成されたデータでは、次のようにCASEステートメントを使用する必要があります。
select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
||t.f1||','
||CASE
WHEN t.f2 > 0 THEN '1'
ELSE '0'
END CASE
from table2 t , table3 t3
ただし、この時点で ... END CASE || '、' ||でステートメントを続行する場合....
TOADがFROMキーワードを見つけられないと不平を言っているため、クエリを実行できなくなりました。
簡単な解決策は、出力をフィールドに分割し、テキストに保存して編集することでしたが、もっと良い方法が必要です。
解決
END CASEの代わりにENDを使用
select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
||t.f1||','
||CASE
WHEN t.f2 > 0 THEN '1'
ELSE '0'
END||','||t.f2
from table2 t , table3 t3
他のヒント
同様の状況では、"デコード"関数は非常にうまく機能します。
式(t.f2> 0)をデコードにフィードしてから、翻訳できる場合があります 「T」を「1」に、「F」を「0」に。
これは試していません。
所属していません StackOverflow