24. august 2016 - 16:06Der er
9 kommentarer og 1 løsning
Case When IS NULL THEN
Hej
Når jeg forsøger at lave nedenstående kald til vores Oracle database får jeg en fejl. Hvis jeg fjerne den første WHEN klausul virker min CASE.
Hvordan bruger man IS NULL korrekt i en CASE statement - hvis man overhovedet kan.
CASE ELEV.AFAR_ID WHEN IS NULL THEN 'Stadig indskrevet' WHEN 6 THEN 'Ikke påbegyndt' WHEN 14 THEN 'Ikke påbegyndt' WHEN 10 THEN 'Fuldført' WHEN 11 THEN 'Fuldført' WHEN 12 THEN 'Fuldført' WHEN 13 THEN 'Fuldført' ELSE 'Frafald' END as Studiestatus,
CASE WHEN ELEV.AFAR_ID IS NULL THEN 'Stadig indskrevet' WHEN ELEV.AFAR_ID = 6 THEN 'Ikke påbegyndt' WHEN ELEV.AFAR_ID = 14 THEN 'Ikke påbegyndt' WHEN ELEV.AFAR_ID = 10 THEN 'Fuldført' WHEN ELEV.AFAR_ID = 11 THEN 'Fuldført' WHEN ELEV.AFAR_ID = 12 THEN 'Fuldført' WHEN ELEV.AFAR_ID = 13 THEN 'Fuldført' ELSE 'Frafald' END as Studiestatus,
CASE WHEN ELEV.AFAR_ID IN (6, 14) THEN 'Ikke påbegyndt' WHEN ELEV.AFAR_ID IN (10, 11, 12, 13) THEN 'Fuldført' ELSE NVL2(ELEV.AFAR_ID,'Frafald','Stadig indskrevet') END as Studiestatus
Hvis man nu anlaegger betragtningen at laesbarhed af kode er det vigtigste, saa er brugen af IN helt oplagt en fordel, mens jeg ikke synes af NLVL2 goer koden en tjeneste idet den i.s.f. en logisk konstruktion CASE bruger CASE og NLVL2.
@arne_v : ja, du har ret; men det er jo en smagssag.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.