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