删除除每个日期的 MIN 语句 ID 之外的所有重复项



好的,所以我的代码中的一个缺陷为相同的费用创建了一堆重复的语句。它们具有相同的居民 ID 和相同的发布日期,但不同的 ID 和声明 ID

ID  |  ResidentID  |  StatementID  |  PostedON
1         4039            10          06-15-18
2         4039            11          06-15-18
3         4039            12          06-15-18
4         4039            20          06-20-18
5         4039            21          06-20-18
6         4039            22          06-20-18
7         3456            13          06-15-18
8         3456            14          06-15-18
9         3456            15          06-15-18
10        3456            23          06-21-18
11        3456            24          06-21-18

我有一个很长的列表,其中包含许多居民ID,这些ID在许多日期中都有重复项。如何删除除该居民 ID 的每个唯一日期的对账单 ID 最低的行之外的所有行

示例:驻留 3456 将返回语句 13 和 23。

这是在sql服务器tsql中。

删除语句如何为此工作。我有:

DELETE FROM Statements 
FROM (SELECT *, 
ROW_NUMBER() 
OVER (
PARTITION BY ResidentID, PostedON, PayerTypeID    
ORDER BY StatementNumber
) seq
FROM Statements
) s
INNER JOIN person p ON s.ResidentID = p.ID
WHERE seq > 1
AND p.FacilityID = 7
AND p.id = 1316

但它似乎删除了该表中的所有内容。我错了吗?

使用row_number()函数:

delete t 
from (select *, 
row_number() over (partition by ResidentID, PostedON order by StatementID) seq
from table 
) t
where seq > 1;

最新更新