Consulta de Oracle SQL, concatenar campos con la sección CASE
Pregunta
Actualmente estoy generando instrucciones de inserción SQL de más de una tabla, y en los datos generados necesito usar una declaración CASE, como esta:
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
Pero en este punto si quiero continuar mi declaración con ... END CASE || ',' || ....
ya no puedo ejecutar la consulta, ya que TOAD se queja de no encontrar la palabra clave FROM.
Una solución rápida fue separar la salida en campos, luego guardarla en texto y editar, pero debe haber una mejor manera.
Solución
Use END en lugar de 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
Otros consejos
Para algunas situaciones similares, la "decodificación" La función funciona bastante bien.
Es posible que puedas introducir la expresión (t.f2 > 0) en una decodificación y luego traducirla 'T' en '1' y 'F' en '0'.
No he probado esto.