2010-07-06 5 views
9

¿Alguien sabe cuál es el problema con esta declaración de selección anidada? Se queja de que falta) 's, pero no puedo entender por qué no funciona (que he dejado las otras partes de la declaración)declaraciones de casos anidados en 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 

Si acabo de hacer

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 

se ¡funciona bien!

cualquier ayuda es muy apreciada

M

lo siento de ser un tard me falta los whens de los casos anidados

Respuesta

20

Debería ser:

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 

es decir, justo " CUANDO "NO", SINO CASO CUANDO "para cada caso.

estaría tentado para simplificar 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 aún mejor: 'CASO CUANDO REQUESTS.grade_id 1 ENTONCES CUANDO ... 2 ... ENTONCES CUANDO ENTONCES ... 3 END' – Guffa

+0

gracias pero esto tampoco funciona, el caso de Else cuando me llegó algo de poco jugando a tring para que funcione. alguna otra idea? – matt1234

+1

me falta el cuándo de los casos anidados !! lo siento ser un tard! – matt1234

Cuestiones relacionadas