SELECT *
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 = 275
ORDER BY s.ResidentID
Имея соленое время, переводя это в УДАЛЕНИЕ.Кто-нибудь получил представление о том, почему?
Вот исходная проблема:
Хорошо, поэтому недостаток в моем коде создал кучу дублирующих операторов для одного заряда.У них тот же ResidentID и та же дата Опубликовано, но разные идентификаторы и 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, которые имеют дубликаты во многих датах.Как удалить все строки, кроме строки с наименьшим StatementID для уникальной даты для этого residentID
Я хочу удалить все дубликаты, кроме наименьшего StatementID, связанного с этой датой / residentID
РЕДАКТИРОВАТЬ:
На самом деле я могу использовать команду обновления, так как в этой таблице есть столбец мягкого удаления, но все же я не могу заставить его работать.Я жалок, я знаю.