2013-11-09 8 views
0

특정 EmpID에 대해 다른 해시 값을 사용하여 레코드를 삽입해야하는 요구 사항이 있습니다. 다음은 스테이징 및 마스터 레코드의 일부 샘플 값입니다. 스테이징은 매주 값을 가져오고 ID 및 해시 값에 따라 마스터에 값을 삽입해야하며 모든 레코드가 처리 될 때 테이블이 잘립니다.데이터를 가져 오는 SQL 서버 쿼리

Week 1 in staging: EMpd ID Hash Value 
    1000 1; 2000 2 
2 records gets inserted in master 

Week2 in staging: EMPID hashvalues 
       1000 -3 
       2000 2 
       3000 5 
Master should have 1000 1;1000 -3; 2000 2; 3000 5 
Week 3 in staging: EMPID hashvalues 
       1000 -5 
       2000 -9 
       3000 5 
Master should have 1000 1;1000 -3; 1000 -5;2000 2; 2000 -9;3000 5 


I have tried doing 
insert into EMP_MASTER (EMPID,EMPNAME,hashValue) 
select mas.*,stg.hashvalue FROM [EMP_master] mas (nolock) 
INNER JOIN [EMP_staging] stg (nolock) ON mas.EMPID = stg.EMPID 
WHERE mas.hashvalue != stg.hashvalue and not exists 
(select 1 from [EMP_Master](nolock) 
where EMPID=stg.EMPID and hashValue=stg.hashvalue) order by EMPID; 

이렇게하면 1000이라는 값이 중복됩니다. 아무도 도와 줄 수 있습니까? 감사합니다. MR

답변

0

기본적으로 다른 테이블에서 일치하는 항목이없는 간단한 선택 행입니다. 시도해 볼 수 있습니다.

insert into EMP_MASTER (EMPID,hashValue) 
    SELECT t1.EMPID, t1.hashValue 
    FROM staging t1 
     LEFT JOIN master t2 ON t1.EMPID = t2.EMPID AND t1.hashValue = t2.hashValue 
    WHERE t2.EMPID IS NULL 
관련 문제