私は、クライアントから毎週更新されるテーブルtblstars_newを持っています。私はtblstars_newから新しいデータと更新されたデータをインポートする必要がある別のテーブルtblstarsを持っています。値が一致しないためのMERGEステートメントの作成
tblstarsに存在しないtblstars_newの行を検索してからtblstarsに追加するのは簡単です。
しかし、私はまた、列PandA_Codeが変更されたtblstars_newの行を見つけて、tblstarsの同じ行を更新する必要があります。
このクエリは、tblstars_newのどの行が変更され、tblstarsで更新する必要があるPandA_Codeを持つかを示します。
SELECT
sn.*
FROM
tblstars_new sn
JOIN tblstars s ON sn.Student_ID_Number = s.Student_ID_Number AND sn.PandA_Code != s.PandA_Code
私は変更を行うMERGEステートメントを見つけようとしています。私がプロードでやっているように、私は本当に遊ぶことができません。 2つの質問:
1)実際に変更を加えずに変更を確認することはできますか?
2)以下のMERGE文は正しいですか?
BEGIN TRAN;
MERGE tblstars AS T -- Target
USING tblstars_new AS S -- Source
ON
(T.Student_ID_Number = S.Student_ID_Number AND T.PandA_Code != S.PandA_Code)
WHEN NOT MATCHED BY TARGET
THEN
UPDATE SET T.PandA_Code = S.PandA_Code
OUTPUT $action;
ROLLBACK TRAN;
GO
両方のテーブルのバックアップをとり、新しい名前で保存してからテストしてください。私はそれが問題の原因にならないことを願っており、100倍も安全です。 – Zi0n1
〜私はちょうどマッチしたときにマッチしてもうまく動作するかもしれないが、テストしていないと思う。 – bhs
@ sboahraの答えがあなたの問題を解決したのはどういうわけか 'tblstars_newから新しいデータや更新されたデータをインポートする必要がある。新しい**? –