Vra

Ek is tans genereer SQL insetsel state van meer as een tafels, en in die gegenereerde data moet ek 'n case-stelling te gebruik, soos volg:

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

Maar op hierdie punt as ek wil my verklaring met ... END CASE||','|| .... voortgaan Ek kan die navraag geen meer hardloop, as TOAD kla oor nie vind die VANAF navraag.

'n vinnige oplossing was om die output te skei in velde, dan stoor dit op teks, en wysig, maar daar moet 'n beter manier wees.

Was dit nuttig?

Oplossing

Gebruik EINDE in plaas van EINDE 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

Ander wenke

Vir 'n paar soortgelyke situasies, die funksie "dekodeer" werk baie goed.

Jy kan in staat wees om die uitdrukking (t.f2> 0) in 'n dekodeer voed, en dan vertaal 'T' in '1 "en" F "in' 0 '.

Ek het dit nie probeer.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top