0
조건부 인수를 기반으로 두 개의 다른 테이블에서 같은 열을 가져 오려고합니다.여러 문을 동시에 선택하기위한 case 문
그래서 전에 많이 사용하지 않은 CASE 문을 발견했습니다. 나는 이것이이 mannor에서 나를 위해 일할 것이라는 것을 알았지 만 하나의 CASE 문을 수행 한 다음 필요한 열을 선택하고 열별로 처리하면 좋을 것입니다.
다음은 내가 가지고 있고 일하는 것의 예입니다. 조금만 중복 된 것처럼 보입니다.
SELECT TOP(10)
u1.userid as userid,
version = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN 3
ELSE 4
END,
nameOrg = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN CONVERT(NVARCHAR, u1.title)
ELSE CONVERT(NVARCHAR, u2.title)
END,
nameContact = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN CONVERT(NVARCHAR, u1.contact)
ELSE CONVERT(NVARCHAR, u2.contact)
END,
pltName = CASE
WHEN (u2.userid IS NULL OR u1.enabled = 0)
THEN p1.name
ELSE p2.name
END
FROM
usr1 u1
LEFT OUTER JOIN
usr2 u2
ON u1.userid = u2.userid
LEFT OUTER JOIN
plt2 p2
ON u2.pltid = p2.pltid
LEFT OUTER JOIN
plt1 p1
ON u1.pltid = p1.pltid
조언이 있으십니까?
- mov 7, 5:22 편집 : 필요한 기능에 추가하려면 plt table 및 pltName 대문자에 조인을 추가하십시오.
유용한 아이디어이지만 null 표현에 대한 보조 조건이 있다는 사실도 무시합니다. 그건 그렇고 또 다른 조인을 추가했습니다. 조건은 동일하고 (처음 두 테이블을 확인합니다), 사용 된 변수는 100 % 유효 답변을 얻는 데 다른 테이블에 있습니다. –