2014-01-28 2 views
0

SQL 테이블에서 2 개의 다른 열의 값을 비교하려고합니다.동일한 SQL 테이블에서 2 열을 비교하십시오.

A ---------------- B 
10 -------------- 88 
20 -------------- 401 
30 -------------- 20 
40 -------------- 99 

난 (20)를 첫 번째 열의 값과 동일한 두번째 컬럼의 값을 유지하도록 할뿐만 아니라, 첫 번째 열의 값을 포함한 것과 (401 40 포함). 나는이 같은 행에 필드를 비교하지만 열의 모든 필드에이 비교를 적용 할 수 없습니다, 사실

A ---------------- B ----------------- C 
10 -------------- 88 ---------------- No 
20 -------------- 401 -------------- Yes 
30 -------------- 20 ---------------- Yes 
40 -------------- 99 ---------------- No 

:

그래서이 예제에서 나는 함께 열 C를 볼 것입니다.

그렇게 할 수 있습니까?

감사

+0

행 바깥 쪽을 비교하려면 하위 쿼리를 사용해야합니다. –

답변

1

당신은 중첩 된 selectcase 문을 사용하여이 작업을 수행 할 수 있습니다. 중첩 된 선택 항목은 like을 사용하여 유사 조건을 충족시키는 행이 있는지 확인합니다.

select t.*, 
     (case when exists (select 1 from table t2 where t1.B like concat(t2.A, '%')) 
      then 'Yes' 
      else 'No' 
     end) as C 
from table t; 

편집 : 포함하여 당신이 원하는 경우

'1401''40'에 맞게 값뿐만 아니라 동일한 경우 B 열이 A 열 시작 때와 like 일치하는 항목을 찾을 수 있습니다 like의 패턴은 concat('%', t2.A, '%')이어야합니다.

+1

양면을'%'로 둘러 쌀 필요 - OP는 * –

+1

@SetSailMedia로 시작하는 것이 아니라 * 포함하는 * 값을 찾고 있습니다. . . 나는 OP가 그 의미에서 * contain *을 사용하고 있는지 확신하지 못한다. 그러나 나는 대답에 주석을 추가했다. –

관련 문제