4

コードとその説明を含むカタログをダウンロードして更新する必要があるというシナリオに陥っています。したがって、このデータを一時テーブルにインポートし、マージステートメントを使用してターゲットテーブルに挿入/更新を実行しようとしていますが、一時テーブルに重複レコードがあり、使用されたマージステートメントが重複して挿入されるという問題が発生しましたターゲット テーブルに記録します。

例: 一時テーブルにデータがあります

   Code   Description
    C1       Desc1
    C2       Desc2
    C1       Desc1    

ターゲットテーブルデータを

   Code   Description
    C1       Desc1
    C2       Desc2

以下のマージステートメントを使用しました:

 MERGE INTO Frames as Target using Temp as Source
 on Source.Code=Target.Code
 WHEN MATCHED THEN  UPDATE  set Target.Description=Source.Description 
 WHEN NOT MATCHED THEN insert (Code,Description) values (Code,Description);

しかし、最終的に私のターゲットテーブルにはデータがあります

   Code   Description
    C1       Desc1
    C2       Desc2
    C1       Desc1   

これは一部の人にとっては簡単な質問かもしれません。しかし、私はSQLに強くないので、私の問題の解決策を期待しています.

前もって感謝します。

4

2 に答える 2

6

Tempソースとして直接使用しないでください。最初に個別の値でフィルタリングしてください

MERGE INTO Frames as Target 
using (SELECT DISTINCT * FROM Temp) as Source
on Source.Code=Target.Code
WHEN MATCHED THEN  UPDATE  set Target.Description=Source.Description 
WHEN NOT MATCHED THEN insert (Code,Description) values (Code,Description);
于 2013-06-19T22:06:32.880 に答える