好的,所以我的代码中的一个缺陷创建了许多重复的语句,但费用相同。它们具有相同的ResidentID和相同的发布日期,但是ID和StatementID不同
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
我有一长串的很多ResidentID,这些ID在许多日期都有重复。如何删除除每个residentID每个唯一日期的StatementID最低的行以外的所有行
示例:居民3456将返回语句13和23。
这是在sql服务器tsql中。
Delete语句如何工作。我有:
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
,但似乎删除了该表中的所有内容。我错了吗?
答案 0 :(得分:0)
使用row_number()
函数:
delete t
from (select *,
row_number() over (partition by ResidentID, PostedON order by StatementID) seq
from table
) t
where seq > 1;