SQLDWHでカラムのキーが一致してればUPDATE、それ以外はINSERTする
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した数がどうなっているかを見ています