2017-09-06 6 views
2

2 개의 테이블 Test1과 Test2가 있습니다. M_OFF, M_PREF, R_OFF의 1 개 값이 R_PREF이 Test2를 테이블의 CODE 열에서 값이 일치하면 '예'를, 다른 설정 '없음'조회 테이블과 일치하는 값이 있는지 확인하여 상태를 설정 하시겠습니까?

Test1 파일로 상태를 설정 :

ID | M_OFF | M_PREF | R_OFF | R_PREF 
1 | H  | H  | M  | M 
2 | H  | H  | L  | L 
3 | L  | L  | L  | L 

Test2를 :

CODE 

H 
M 

예상 출력 :

ID | M_OFF | M_PREF | R_OFF | R_PREF | STATUS 
1 | H  | H  | M  | M  | YES 
2 | H  | H  | L  | L  | YES 
3 | L  | L  | L  | L  | NO 

두 테이블 모두 가입하면 예상치 못한 중복 값이 ​​표시됩니다. 이것을 달성하는 방법?

+0

는 당신이 우리에게 무엇을 시도했다 아이디어를 줄 수 있습니까? –

답변

2

흠. . .

select t1.*, 
     (case when exists (select 1 from test2 t2 where t2.code in (t1.M_OFF, t1.M_PREF, t1.R_OFF, t1.R_PREF) 
      then 'YES' 
      else 'NO' 
     end) as status 
from test1 t1; 
+0

다시 한번 당신은 나를 위해 너무 빨리 망할 것입니다 :-) –

+1

"Fast"는 고든에게 이름을 바꾸어야한다고 생각합니다. –

1

당신은 하위 쿼리를 사용할 수 있습니다

SELECT ID, M_OFF, M_PREF, R_OFF, R_PREF, 
     CASE WHEN EXISTS (
      SELECT 1 
      FROM Test2 
      WHERE Code IN (M_OFF, M_PREF, R_OFF, R_PREF) 
     ) THEN 'Yes' 
     ELSE 'No' 
     END As [Status] 
FROM Test1