Да - вы или должны ввести поле date_of_entry или другое векторное поле, например IDENTITY
.Например, если столбец Id
является вашим INT IDENTITY
, то ваш запрос будет выглядеть следующим образом:
;WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work, hours
ORDER BY ( SELECT Id DESC)) RN
FROM work_hours)
DELETE FROM cte
WHERE RN > 1
Конечно, действительно, если никто не изменяет значения в IDENTITY
column
И если ваши условия удовлетворяют - тогда вы можете использовать столбец Hours
в качестве векторного поля в пределах диапазона группировки person_id, date_work
И еще лучше должен иметь UNIQUE INDEX
над столбцами person_id, date_work, hours
, тогда не будет никакой возможности добавлять дубликаты.