2010-07-06 16 views
9

qualcuno sa che cosa non va con questa istruzione select annidata? Si lamenta che mancano le s '), ma non riesco a capire il motivo per cui non funziona (ho lasciato fuori gli altri bit della dichiarazione)istruzioni caso nidificate di sql

Select 
(CASE WHEN REQUESTS.grade_id = 1 THEN 
     (CASE WHEN ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes' 
      ELSE 'No' 
     END) 
ELSE CASE WHEN REQUESTS.grade_id = 2 THEN 
     (CASE ((date_completed-date_submitted)*24*60) <=120 THEN 'Yes' 
      ELSE 'No' 
     END) 
ELSE CASE WHEN REQUESTS.grade_id = 3 THEN 
    (CASE ((date_completed-date_submitted)*24*60)<=14400 THEN 'Yes' 
      ELSE 'No' 
    END) 
END)in_SLA 

Se io faccio solo

Select 
     (CASE WHEN REQUESTS.grade_id = 1 THEN 
      (CASE WHEN ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes' 
       ELSE 'No' 
      END) 
     END) in_sla 

E' funziona bene!

ogni aiuto è molto apprezzato

M

dispiace essere un tard mi manca i whens dei casi annidati

risposta

20

Dovrebbe essere:

Select 
(CASE WHEN REQUESTS.grade_id = 1 THEN 
     (CASE WHEN ((date_completed-date_submitted)*24*60)<=30 THEN 'Yes' 
      ELSE 'No' 
     END) 
     WHEN REQUESTS.grade_id = 2 THEN 
     (CASE ((date_completed-date_submitted)*24*60) <=120 THEN 'Yes' 
      ELSE 'No' 
     END) 
     WHEN REQUESTS.grade_id = 3 THEN 
    (CASE ((date_completed-date_submitted)*24*60)<=14400 THEN 'Yes' 
      ELSE 'No' 
    END) 
END)in_SLA 

vale a dire solo " QUANDO "non" ALTRO CASO QUANDO "per ogni caso.

sarei tentato di semplificare a:

Select 
CASE WHEN (REQUESTS.grade_id = 1 AND (date_completed-date_submitted)*24*60 <= 30) 
     OR (REQUESTS.grade_id = 2 AND (date_completed-date_submitted)*24*60 <=120) 
     OR (REQUESTS.grade_id = 3 AND (date_completed-date_submitted)*24*60 <=14400) 
    THEN 'Yes' 
    ELSE 'No' 
END in_SLA 
+2

O ancora meglio: 'CASE REQUESTS.grade_id QUANDO 1 ALLORA ... QUANDO 2 ALLORA QUANDO ... 3 THEN ... FINE' – Guffa

+0

grazie ma questo non funziona neanche, il caso Else Quando mi è venuto un po 'da me, mi sono truccato per farlo funzionare. altre idee? – matt1234

+1

mi manca il Quando dai casi nidificati !! scusa essere un tard! – matt1234

Problemi correlati