처음 포스터 오랜 시간 익명 사용자.예기치 않은 결과를 생성하는 중첩 된 SQL 문
사람들이 속한 수준에 따라 등록 정보를 가져 오려고합니다. 00 수준의 사용자는 두 개의 등록 중 하나에 들어갈 수 있으므로 중첩 된 사례 문을 수행하려고합니다. 성명서에 나와 있듯이, 나는 중첩 된 사례 진술의 두 결과 모두에 나타나고있는 사람들이 꽤있다. 다른 모든 레벨은 정상적으로 작동합니다. 누구나 왜 결과가 when과 else 문 모두에 나타나는지에 대한 아이디어가 있습니까? 아니면 중첩 된 CASE 문 대신이 코드를 작성하는 더 적절한 방법이 있습니까? 화면 = 100을 갖는 기준을 충족 00의 수준을 가진 사람에 대한
CASE
WHEN B.Level = '00'
THEN
CASE
WHEN C.SCREEN = '100' and C.FIELD_NUMBER = '65' and C.FIELD_VALUE = 'Y' THEN CONCAT(B.Location, ':', B.Level, ':', 'H')
ELSE CONCAT(B.Location, ':', B.Level, ':','A')
END
WHEN B.Level in ('A', 'B', 'C', 'D', 'E') THEN CONCAT(B.Location, ':', 'A-E')
WHEN B.Level in ('F', 'G', 'H') THEN CONCAT(B.Location, ':', 'F-H')
WHEN B.Level = 'I' THEN CONCAT(B.Location, ':', 'I')
WHEN B.Level = 'J' THEN CONCAT(B.Location, ':', 'J')
WHEN B.Level = 'K' THEN CONCAT(B.Location, ':', 'K')
ELSE CONCAT(':', B.Location, B.Level)
END AS Registration,
현재 결과, Field_Number = 65 필드 _value = Y가 같은 중복이 발생할 것이다 :
- 사람 X있는 Location1 : 레벨 1 : H
- 인 X있는 Location1 : 레벨 1하십시오
인 X가 기준이 그 때 보여주는 두번째 결과를 안거나 적어도 즉 것을 충족하면 내가 갈 결과.
조인과 관련하여 "사람"당 하나의 값을 다시 가져 오는 것입니까? – JohnHC
질문을 편집하고 샘플 데이터와 원하는 결과를 제공하십시오. 'case' 표현식에서 정확히 하나의'then' 절이 리턴됩니다. –