Oracle SQL-запрос, объединение файлов с разделом CASE - PullRequest
2 голосов
/ 29 сентября 2008

В настоящее время я генерирую операторы вставки 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.

Быстрое решение состояло в том, чтобы разделить выходные данные на поля, затем сохранить их в текст и отредактировать, но должен быть лучший способ.

Ответы [ 2 ]

3 голосов
/ 29 сентября 2008

Используйте END вместо END CASE

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
1 голос
/ 29 сентября 2008

В некоторых похожих ситуациях функция «декодирования» работает достаточно хорошо.

Вы можете передать выражение (t.f2> 0) в декодер, а затем перевести «Т» в «1» и «F» в «0».

Я не пробовал это.

...