質問

現在、複数のテーブルから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」に。

これは試していません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top