2013-11-09 152 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