У меня есть таблица, в которой хранятся записи банковского счета сотрудника. Есть дубликаты записей последней записи, созданной пользователем, которые были созданы в результате ежедневного выполнения задания.
Например: для Сотрудника E1 ниже приведены записи банковского счета в БД
Jan 1 2015 - Bank X
Jan 1 2018 - Bank Y
Jan 1 2020 - Bank X
Здесь несколько повторяющихся записей для Банка X и Y после каждого изменения вручную 1 января 2015 года, 18 и 20.
Теперь я должен удалить дубликаты записей, которые являются дубликатами в терминах значений столбцов "BankName "и" BankAccountNumber ".
Здесь в этом сценарии в системе должны оставаться все записи, которые обновляются 1 января 2015, 2018 и 2020 годов, даже если имя и номер счета совпадают для Банк X.
Столбцы, которые мы рассматриваем в таблице для подготовки сценария:
1. Recordid(Uniqueidentifier) primary key
2. Recordsequence(INT) Identity column by 1
3. EmployeeID(INT) <set of records are linked to an employee through of employee table>.
Мой текущий Logi c предназначен для поиска дубликатов и удаления записей:
;WITH BARecords
AS (
SELECT recordid
,ROW_NUMBER() OVER (
PARTITION BY employeeID
,BankName
,AccountNumber ORDER BY recordsequence
) row_num
FROM employeebankaccount WITH (NOLOCK)
WHERE employeeid IN (
SELECT Id
FROM @EMPLOYEEIDs
)
)
DELETE
FROM BARecords
WHERE row_num > 1
Мои текущие логины c будут также удалять детали Банка X с 1 января 2020 года и сохранятся только с 1 января 2015 года. Поскольку пользователь обновил Банк X aga в том, что также должно остаться в системе дат создания 1 января 2020 года.