【发布时间】:2018-02-26 21:32:30
【问题描述】:
我对此还有两个问题,但这个问题更集中。 Merge 语句的基本结构如下所示。为了时间和篇幅,我总结了一些细节。本来我打算尝试将8合并为1。那是一次徒劳的冒险,所以我缩小了范围。对于这个,我正在尝试结合行业 21 和行业 4,知道有 8 行主键重复。主键是由 9 个字段组成的复合键(不确定是否相关)。它们是 13 个外键。
通过查看下面的代码,有人能明白为什么我会在第一个粗体项上的 = 符号上得到不正确的语法。接下来在同一条粗线上,为什么当我将鼠标悬停在 .在同一行的 source 和 periodtype 之间,我是否收到有关“合并语句必须在列中终止”的错误
Merge industry4 AS TARGET
USING industry21 as SOURCE
ON (target.primarykey1 = Source.primarykey1) or (target.primarykey2 =
Source.primarykey2) or..... (target.primarykey9 = Source.primarykey9)
--When records are matched, update
--the records if there is any change
WHEN MATCHED AND
TARGET.foreignkey1 <> SOURCE.foreignkey1
OR .... TARGET.foreignkey13 <> SOURCE.foreignkey2
THEN
UPDATE SET TARGET.pk1 = SOURCE.pk1,
TARGET.pk2 = SOURCE.pk2
**TARGET.periodtype(pk5) = SOURCE.periodtype (pk5)**
.....
TARGET.fk13 = SOURCE.fk13
--When no records are matched, insert
--the incoming records from source
--table to target table
WHEN NOT MATCHED BY TARGET THEN
INSERT (fieids 1-22)
VALUES (SOURCE.pk1, SOURCE.pk2......SOURCE.fk13)
WHEN NOT MATCHED BY SOURCE THEN
DELETE
【问题讨论】:
标签: merge insert sql-update ssms target