在sqlserver中与日期时间比较合并

时间:2013-11-11 18:40:52

标签: sql-server-2008 tsql merge

我有一张临时表(表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表中获得重复记录。

我无法找出匹配和NF的原因。[RCRD_CRN_DATE]&lt; 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表有三个记录。

0 个答案:

没有答案
相关问题