我有一张表中刻意有重复的表。在这种情况下,将被复制的东西是deviceId和日期时间。有时客户更新他们的数据。该表有三列,deviceId,datetime和value(有一个增量主键)。有时,当客户重新评估他们的数据时,他们会注意到这个值是不正确的,他们会更新它并发送数据以进行重新处理。因此,我需要能够删除不是最新记录的记录。我不能按日期时间做,因为这在某些情况下也会被重复,我不能截断暂存表。删除不是最新的所有记录
要删除受骗者我有以下几点:
;WITH DupeData AS (
SELECT ROW_NUMBER() OVER(PARTITION BY tblMeterData_Id,fldDateTime, fldValue, [fldBatchId],[fldProcessed] ORDER BY fldDateTime) AS ROW
FROM [Stage.tblMeterData])
DELETE FROM DupeData
WHERE ROW > 1
的问题,这一点,是它似乎删除随机重复。
我想保留暂存区域中的最新记录并删除不是最新记录的其他记录。然后,我可以用新数据和最新数据更新相关行,当我把它从升级到产品时。
在桌子上的任何主要或唯一键? 'DELETE FROM DupeData 其中id在从( SELECT ID,ROW_NUMBER()OVER(PARTITION BY tblMeterData_Id,fldDateTime,fldValue,[fldBatchId],[fldProcessed] ORDER BY fldDateTime)AS ROW FROM [阶段 (选择ID。 tblMeterData]) )q 其中q.row> 1)' – are
只有我用来发送表的增量Id。 –
我认为这一分钱刚刚下降! –