我刚刚发现了这个漂亮的小功能。我有几个问题。考虑下面的陈述。
这就是解释它是如何工作的。USING 语句是用来比较是否匹配正确的?我想使用它现在的样子,但我想在 MATCH 部分的源表中使用另外 2 个列。我不能那样做。那么有没有办法可以使用 2 列(已故(我知道它的拼写错误:))和 hicno_enc)?
我想做的另一件事不知道是否可能,但是如果该行存在于目标中但不存在于源中,则将其标记为非活动。
SELECT FIRST_NAME, LAST_NAME, SEX1, BIRTH_DATE
FROM
aco.tmpimport i
INNER JOIN aco.patients p
ON p.hicnoenc = i.hicno_enc
MERGE aco.patients AS target
USING (
SELECT FIRST_NAME, LAST_NAME, SEX1, BIRTH_DATE
FROM aco.tmpimport
) AS source
ON target.hicnoenc = source.hicno_enc
WHEN MATCHED AND target.isdeceased <> CONVERT(BIT,source.decesed) THEN
UPDATE
SET
target.isdeceased = source.decesed,
updatedat = getdate(),
updatedby = 0
WHEN NOT MATCHED THEN
INSERT (firstname, lastname, gender, dob, isdeceased, hicnoenc)
VALUES (source.FIRST_NAME,
source.LAST_NAME,
source.sex1,
source.BIRTH_DATE,
source.decesed,
source.hicno_enc);