読者です 読者をやめる 読者になる 読者になる

SQLDWHでカラムのキーが一致してればUPDATE、それ以外はINSERTする

DWH

UPDATEとINSERTそれぞれ別でも良かったのですが、投げるSQLを少なくしたかったので1つにまとめました。

@@ROW_COUNTを使用して簡単にいくかなって思ったのですが、、
azure.microsoft.com



どうやら@@ROW_COUNTが使用できないらしい、、

とりあえず急ぎだったので、ゴリ押しで作成!
何か良い方法知ってる方は教えて欲しいです!

UPDATE <テーブル名1>
SET
  <テーブル名1>.<カラム名> = <テーブル名2>.<カラム名>
FROM
<テーブル名2>
WHERE <>.id = <テーブル名2>.id
IF (SELECT count(<テーブル名1>.id) FROM <テーブル名1> INNER JOIN <テーブル名2> ON <テーブル名1>.id = <テーブル名2>.id) != (SELECT count(<テーブル名1>.id) FROM <テーブル名1>)
INSERT INTO <テーブル名1>(
  <カラム名>
)
SELECT
 <カラム名>
FROM <テーブル名2>
LEFT OUTER JOIN <テーブル名1> ON <テーブル名1>.id = <テーブル名2>.id
where <テーブル名1>.id is null;"

かなりゴリ押しですが、こんな感じ
IFの部分で無理矢理UPDATEした数がどうなっているかを見ています