好的,所以我的代码中的一个缺陷为相同的费用创建了一堆重复的语句。它们具有相同的居民 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;