У меня проблема с дублирующимися записями в базе данных SQL Server 2014.
Пользователи получают небольшую открытку с напечатанным номером посылки. На открытке также показана ссылка на простую форму, которую они могут использовать для регистрации своей посылки.
Форма, к сожалению, не имеет какого-либо вида проверки, чтобы гарантировать, что одна и та же посылка не будет отправлена более одного раза , В настоящее время у меня нет контроля над веб-формой, и я не уверен, сколько времени потребуется ответственной команде для ее проверки.
Поэтому мне нужно придумать процедуру для деактивации дубликатов записей, и оставь только одну.
Это должен быть запрос, который обрабатывает большую часть записей, токены не передаются в подпрограмму.
Когда веб-форма отправляется, она создает идентификатор записи в последовательном порядке и присваивает статус приложения «Зарегистрировано». Я думаю, что способ исправить это - принять самое высокое значение идентификатора записи за parcel, и это будет тот, который нужно сохранить, остальные должны быть деактивированы.
Деактивировать не самые последние записи, установив rec_status со значением «I». записи
Используемый мной запрос возвращает 4 столбца: Идентификатор записи, Номер посылки, Статус записи и Статус приложения
SELECT
B.[RECORD_ID],
B.[PARCEL_NBR],
B.[RECORD_STATUS], -- The value of this column would be "I" for the duplicate records.
B.[APPLICATION_STATUS]
FROM
A_TABLE A
INNER JOIN B_TABLE B
ON A.PARCEL_NBR = B.PARCEL_NBR
AND (A.APPLICATION_STATUS IS NULL
OR B.APPLICATION_STATUS = 'Registered');
Первоначальный вывод:
RECORD_ID PARCEL_NBR RECORD_STATUS APPLICATION_STATUS
REC-00081 0608012098 A Registered
REC-00082 0608012098 A Registered
REC-00083 0608012098 A Registered
Ожидается Вывод:
RECORD_ID PARCEL_NBR RECORD_STATUS APPLICATION_STATUS
REC-00081 0608012098 I Closed - this record got updated
REC-00082 0608012098 I Closed - this record got updated
REC-00083 0608012098 A Registered
Я думаю, что, возможно, курсор может быть частью решения? Честно говоря, я не уверен. Я прошу вашей помощи.