我有一个临时表(表 T)和另一个表有最终数据(故事 F)。
我需要比较一个关键字段(这里是锡),如果记录已经存在并且记录创建日期早于 T 中的那个,
我想更新 F 中的记录。
如果记录不可用,T
我想替换它。
我使用了如下所示的合并-
MERGE Digitization329 AS NF
USING
( SELECT *
FROM TMP_Npr
) AS NT
ON NF.Tin = NT.Tin
WHEN MATCHED AND NF.[RCRD_CRN_DATE] < NT.[RCRD_CRN_DATE]
THEN
UPDATE
SET [FULLNAME] = NT.FULLNAME ,
[FATHERNAME] = NT.FATHERNAME ,
[MOTHERNAME] = NT.MOTHERNAME ,
[SPOUSENAME] = NT.SPOUSENAME
WHEN NOT MATCHED
THEN
INSERT (
[TIN] ,
[FTIN] ,
[FULLNAME] ,
[FATHERNAME] ,
[MOTHERNAME] ,
[SPOUSENAME]
)
VALUES ( NT.TIN ,
NT.FTIN ,
NT.FULLNAME ,
NT.FATHERNAME ,
NT.MOTHERNAME ,
NT.SPOUSENAME
);
RCRD_CRN_DATE
在这两个表中都是datetime
类型。
但是我总是在 F 表中得到重复的记录。
我无法找出 WHEN MATCHED AND NF.[RCRD_CRN_DATE] < NT.[RCRD_CRN_DATE] 不起作用的原因。
谢谢。
我的 T 表包含三个记录
tin RCRD_CRN_DATE ...
123 10-11-2013-12.20.30
123 10-11-2013-12.20.35
345 10-11-2013-01.10.10
操作后F表有全部3条记录。