반응형
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
반응형
'prosource' 카테고리의 다른 글
스프링 부팅 애플리케이션을 배포하려면 web.xml이 필요합니까? (0) | 2023.07.27 |
---|---|
npm을 통해 설치된 노드 모듈을 편집하려면 어떻게 해야 합니까? (0) | 2023.07.27 |
파워셸에서 XML을 통해 반복하는 방법은 무엇입니까? (0) | 2023.07.27 |
PLSQL 랜덤 정수 생성 (0) | 2023.07.27 |
mysql 정렬 문자열 번호 (0) | 2023.07.27 |