Запрос 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 вместо 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
Другие советы
В некоторых подобных ситуациях функция «декодирования» работает вполне хорошо.
Возможно, вы сможете подавать выражение (t.f2> 0) в декод, а затем перевести «t» в «1» и «f» в '0'.
Я не пробовал это.