prosource

sql 중첩된 대/소문자 문장

probook 2023. 7. 27. 22:07
반응형

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

만약 내가 한다면,

    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

늦어서 죄송합니다. 중첩된 사례에서 시기를 놓치고 있습니다.

다음과 같아야 합니다.

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

언급URL : https://stackoverflow.com/questions/3187789/sql-nested-case-statements

반응형