我面临一个问题,找不到任何解决方案。我有一个源表(T),我从字段中获取数据。数据可能包含带有时间戳的重复记录。我的目标是获取字段数据并将其存储到具有相同结构的最终表 (F) 中。在插入之前,我检查 F 中是否存在关键字段,如果是,我用 T 中的最新记录更新 F 中的记录。否则,我从 T 中插入 F 中的记录。只要没有重复,这工作正常记录在 T 中。如果 T 有两个具有不同时间戳的相同密钥的记录。它总是插入两条记录(如果键是主键,则插入操作失败)。我正在使用以下代码进行操作 -
IF EXISTS(SELECT * FROM [Final_Table] F, TMP_Source T WHERE T.IKEy =F.IKEY)
begin
print 'Update'
UPDATE [Final_Table]
SET [FULLNAME] = T.FULLNAME
,[FATHERNAME] = T.FATHERNAME
,[MOTHERNAME] = T.MOTHERNAME
,[SPOUSENAME] = T.SPOUSENAME
from TMP_Source T
WHERE Final_Table.IKEy = T.IKEy
and [Final_Table].[RCRD_CRN_DATE] < T.RCRD_CRN_DATE
--Print 'Update'
end
else
begin
INSERT INTO [Final_Table]
([IKEy],[FTIN],[FULLNAME],[FATHERNAME],[MOTHERNAME],[SPOUSENAME]
)
Select IKEy,FTIN,FULLNAME,FATHERNAME,MOTHERNAME,SPOUSENAME
from TMP_Source
end
当我的 T 表有以下条目时,问题就来了 -
IKey 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 表中。请帮忙。