2010-07-06 5 views
9

Est-ce que quelqu'un sait ce qui ne va pas avec cette instruction select imbriquée? Il se plaint de manquer) de mais je ne peux pas comprendre pourquoi il ne fonctionne pas (je l'ai laissé hors les autres bits de la déclaration)sql instructions de cas imbriqués

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 

Si je fais juste

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 

Il fonctionne bien!

toute aide est très appréciée

M

désolé d'être un manque je suis tard les whens des cas imbriqués

Répondre

20

Il devrait être:

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 

-à-dire juste " QUAND "pas" ELSE CASE WHEN "pour chaque cas.

Je serais tenté de simplifier à:

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

Ou mieux encore: 'CASE REQUESTS.grade_id QUAND 1 ALORS ... QUAND 2 ALORS ... QUAND 3 ALORS ... END' – Guffa

+0

merci mais ça ne marche pas non plus, l'Else Case When bit vient de moi en train de tripoter tring pour le faire fonctionner. d'autres idées? – matt1234

+1

il me manque le quand des cas imbriqués !! désolé d'être un retard! – matt1234