2014-09-22 3 views
0

하나의 테이블 (# 1)에서 다른 테이블 (# 2)로 기본 삽입을 시도하고 있지만 올바르게 설정하기 위해 # 2 테이블에 플래그 열을 만들었습니다 , 원본 테이블 (# 1) 2 레코드 차이를 확인할 수 있어야합니다. 이 두 번째 테이블은 verisoning 테이블의 일종입니다. 그것은 테이블 # 1에서 무언가에 대한 레코드가 여러 개 있음을 나타내지 만, 서로 다른 버전 (다른 버전은 테이블 # 1에서 1 또는 2 개의 보조 필드 만 다르다)이고 테이블 # 2는 두 개/세 가지 버전.동일한 테이블의 두 레코드를 비교하는 Netezza SQL

(테이블 # 2) 테이블 # 1의 소스 레코드에 따라 "P", "B"또는 "J"중 하나 인 "왜이 추가 된 이유"플래그가 표시됩니다.

표 1의 두 레코드 간의 차이가 열 날짜에있는 경우 플래그는 "P"가됩니다. 두 레코드 간의 차이가 열의 양인 경우 플래그는 "B"가됩니다. 차이가 날짜와 금액 모두라면 플래그가 "J"로 설정됩니다.

그럼 어떻게하면 같은 테이블에있는 두 레코드의 필드를 비교하는 삽입 문을 수행 할 수 있습니까?

모든 조언을 주시면 감사하겠습니다. 나는 Netezza SQL을 사용하여 가상 테이블을 생성 할 수 없다고 믿는다.

+0

코드 스 니펫을 포함하는 것이 가장 좋습니다. –

답변

1
select t1.id, 'j' 
from table t1 
join table t2 
    on t2.id t1.id 
and t2.date <> t1.date 
and t2.amount <> t2.amount; 
select t1.id, 'p' 
from table t1 
join table t2 
    on t2.id == t1.id 
and t2.date <> t1.date 
and t2.amount = t2.amount; 
select t1.id, 'b' 
from table t1 
join table t2 
    on t2.id = t1.id 
and t2.date = t1.date 
and t2.amount <> t2.amount; 
관련 문제