Oracle sql query, concatena i campi con la sezione CASE
Domanda
Attualmente sto generando istruzioni di inserimento SQL da più di una tabella e nei dati generati ho bisogno di usare un'istruzione CASE, come questa:
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
Ma a questo punto, se voglio continuare la mia affermazione con ... END CASE || ',' || ....
Non riesco più a eseguire la query, poiché TOAD si lamenta di non aver trovato la parola chiave FROM.
Una soluzione rapida era quella di separare l'output in campi, quindi salvarlo in testo e modificarlo, ma deve esserci un modo migliore.
Soluzione
Usa END anziché 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
Altri suggerimenti
Per alcune situazioni simili, la "decodifica" la funzione funziona abbastanza bene.
Potresti essere in grado di alimentare l'espressione (t.f2 > 0) in un decodifica, quindi tradurre 'T' in '1' e 'F' in '0'.
Non ho provato questo.