0

特定の EmpID に対して異なるハッシュ値を持つレコードを挿入する必要があるという要件があります。以下は、ステージング レコードとマスター レコードのサンプル値です。ステージングは​​毎週値を取得し、ID とハッシュ値に応じてマスターに値を挿入する必要があり、すべてのレコードが処理されるとテーブルが切り捨てられます。

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

4

1 に答える 1

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 
于 2013-11-09T13:50:59.490 に答える