SQL вложенные операторы case

Кто-нибудь знает, что не так с этим вложенным оператором выбора? Он жалуется на отсутствие ) , но я не могу понять, почему это не работает (я пропустил другие части инструкции)

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

если я просто сделаю

    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

Он отлично работает!

Любая помощь высоко ценится

M

извините за опоздание, я пропустил когда из вложенных случаев


person matt1234    schedule 06.07.2010    source источник


Ответы (1)


Так должно быть:

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

то есть просто «КОГДА», а не «ДРУГОЙ СЛУЧАЙ, КОГДА» для каждого случая.

У меня возникнет соблазн упростить до:

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
person Tony Andrews    schedule 06.07.2010
comment
Или еще лучше: CASE REQUESTS.grade_id WHEN 1 THEN ... WHEN 2 THEN ... WHEN 3 THEN ... END - person Guffa; 06.07.2010
comment
спасибо, но это тоже не работает, еще один случай Когда я немного возился с tring, чтобы заставить его работать. любые другие идеи? - person matt1234; 06.07.2010
comment
я пропускаю Когда из вложенных случаев!! извините, что отсталый! - person matt1234; 06.07.2010