Я уже проверил вопрос Удаление дубликатов записей с использованием временной таблицы , и это не достаточно далеко, чтобы помочь мне с этим вопросом:
У меня есть таблица приблизительно из 200 000 адресов, размещенных на SQL 2000 Server . Эта таблица имеет огромную проблему с дублирующимися данными в таблице, вызванными неправильным вводом данных различными сторонами на протяжении многих лет. Мне нужно вывести список дубликатов записей, чтобы я мог начать долгий процесс их очистки.
Итак, рассмотрим следующую структуру таблицы:
Table Company(
CompanyId NVarChar(10) Not Null Constraint PK_Locations Primary Key,
CompanyName NVarChar(30),
CompanyAddress NVarChar(30),
CompanyCity NVarchar(30),
CompanyState Char(2),
CompanyZip NVarChar(10),
DateCreated DateTime,
LastModified DateTime,
LastModifiedUser NVarChar(64)
)
Для первого разбора я даже не буду беспокоиться о опечатках и вариациях правописания, а это будет большим кошмаром в будущем, который я даже не получил даже первой подсказки о решении.
Таким образом, для этой части запись считается дублирующейся, если несколько записей соответствуют следующим условиям:
(CompanyName Or CompanyAddress) и компанияГород и компания штата
Zip исключен, потому что во многих местах отсутствуют почтовые индексы и так много введено неверно, что если я их добавлю, это просто даст гораздо менее точный отчет.
Я понимаю, что на законных основаниях может быть несколько мест для компании в пределах одного города / штата [например, McDonalds, прямо у меня в голове], и на законном основании может быть несколько компаний по одному адресу в городе и указать [например, внутри торгового центра или офисного здания], но сейчас мы рассмотрим, что они по крайней мере требуют определенного уровня человеческого внимания, и включим их в отчет.
Совпадения на отдельных полях - это просто, но я отклеиваюсь, когда добираюсь до нескольких полей, особенно когда некоторые являются условными.