Frage

Ich bin derzeit zu erzeugen SQL Insert-Anweisungen von mehr als einer Tabellen und in der generierten Daten Ich brauche eine CASE-Anweisung zu verwenden, wie folgt aus:

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

Aber an diesem Punkt, wenn ich möchte, dass meine Aussage weiterhin mit ... END CASE||','|| .... kann ich die Abfrage nicht mehr laufen, wie TOAD beschwert mich über nicht das Schlüsselwort FROM finden.

Eine schnelle Lösung war die ouput in Felder zu trennen, ist es dann, um Text zu speichern und zu bearbeiten, aber es muss ein besserer Weg geben.

War es hilfreich?

Lösung

Mit END statt 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

Andere Tipps

Für einige ähnliche Situationen arbeitet der „decode“ -Funktion ganz gut.

Möglicherweise können Sie den Ausdruck (t.f2> 0) in eine dekodieren füttern, und dann übersetzen 'T' in '1' und 'F' in '0'.

Ich habe nicht versucht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top