我有两张桌子,我必须合并记录。
源:
ID seq name designation company
001 1 aaa Developer YYY
001 2 aaa lead yyy
002 1 mmm consultant bbb
003 1 ppp developer yyy
003 2 ppp lead yyy
003 3 ppp manager yyy
目标:
ID seq name designation company
001 1 aaa Developer YYY
001 2 aaa lead yyy
002 1 mmm consultant bbb
003 1 ppp developer yyy
003 2 ppp lead yyy
003 3 ppp manager yyy
我想写合并插入/更新记录。我的关键列是ID和seq both.they是复合主键。 通常它是我们得到的更新记录。例如,ID 001在源中有两个记录。如果ID 001获得序列3的另一条记录,则该记录应作为目标插入。
如果我的来源现在有 源:
ID seq name designation company
001 1 aaa Developer YYY
001 2 aaa lead yyy
001 3 aaa manager yyy
002 1 mmm consultant bbb
003 1 ppp developer yyy
003 2 ppp lead yyy
003 3 ppp manager yyy
那么目标应该是: 目标:
ID seq name designation company
001 1 aaa Developer YYY
001 2 aaa manager yyy
001 3 aaa manager yyy
002 1 mmm consultant bbb
003 1 ppp developer yyy
003 2 ppp lead yyy
003 3 ppp manager yyy
我正在尝试使用以下合并,但这对我不起作用。
MERGE target t
using source s
on s.ID=t.ID and s.seq=t.seq
when not matched
then
Insert
(
ID,
seq,
name,
designation,
company
)
Values
(
s.ID,
s.seq,
s.name,
s.designation,
s.company
)
when matched
then
update
set
name=s.name,
designation=s.designation,
company=s.company
;
你能告诉我哪里出错了吗?
任何帮助表示赞赏
答案 0 :(得分:0)
您必须指定sum(1 if x in A else -1 if x in b else 0 for x in arr)
只需尝试以下查询:
NOT MATCHED BY TARGET