スッキリかけるが、insert時に独自に採番したい場合などで
シーケンスが使えない、変数をインクリメントする処理を書く等ができないなど
融通が利かないケースがあるので注意。
■サンプル
BEGIN
--TABLEB:insert/update対象テーブル
MERGE INTO [dbo].[TABLEB] AS b
USING (
--insert/update元データ取得SQL
SELECT
KEYB1
,COLA1
,COLA2
FROM TABLEA
) AS a ON (
a.KEYA1 = b.KEYB1
)
WHEN MATCHED AND (
a.COLA3 = '1' --合致するキーがあり、かつ~~~の場合
) THEN
UPDATE SET
b.COLA1 = a.COLB1 ---注)キー項目は含めない
,b.COLA2 = a.COLB2
--合致しない場合、insert
WHEN NOT MATCHED THEN
INSERT (
KEYB1
,COLB1
,COLB2
) VALUES (
KEYA1
,COLA1
,COLA2
);
END