0

我有一个临时表(表 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条记录。

4

0 回答 0