У меня есть набор данных, который имеет три поля: адрес, числа, извлеченные из адреса, и буквы, извлеченные из адреса.
IF OBJECT_ID ('tempdb..#addresses') IS NOT NULL
DROP TABLE #addresses
create table #addresses (
address_numbers varchar(50),
address_all varchar(100),
address_letters varchar(100)
)
insert into #addresses
values ('12345678','123 Something Rd, Somewhere NY 45678', 'SOMETHINGRDSOMEWHERENY'),
('12345678','123 Something Road, Somewhere NY 45678', 'SOMETHINGROADSOMEWHERENY'),
('23445678','234 Something Road, Somewhere NY 45678', 'SOMETHINGROADSOMEWHERENY')
Я хотел бы найти группы адресов по сходству в пределахтакие же раздетые номера. Я знаю, как найти сходство между двумя текстовыми строками ...
select *
from #addresses a
left outer join #addresses b on a.address_numbers = b.address_numbers and MDS_DB.MDQ.SIMILARITY(a.address_letters ,b.address_letters , 2, 0, .90) >= .90
... но я не уверен, как назначить примерный / групповой код для каждого адреса в исходных данных. Желаемые результаты выглядят так:
IF OBJECT_ID ('tempdb..#addresses_desired_result') IS NOT NULL
DROP TABLE #addresses_desired_result
create table #addresses_desired_result (
address_numbers varchar(50),
address_all varchar(100),
address_letters varchar(100),
address_group varchar(100)
)
insert into #addresses_desired_result
values ('12345678','123 Something Rd, Somewhere NY 45678', 'SOMETHINGRDSOMEWHERENY', '123 Something Rd, Somewhere NY 45678'),
('12345678','123 Something Road, Somewhere NY 45678', 'SOMETHINGROADSOMEWHERENY', '123 Something Rd, Somewhere NY 45678'),
('23445678','234 Something Road, Somewhere NY 45678', 'SOMETHINGROADSOMEWHERENY', '234 Something Road, Somewhere NY 45678')
select *
from #addresses_desired_result
address_group
может быть одним из адресов в группе или просто целым числом. Цель состоит в том, чтобы объединить отдельный список адресов и образцов обратно в гораздо большую таблицу транзакций и записи групп по номеру образца / группы.
Как назначить адрес образца / номер группы каждой группе аналогичныхадреса внутри одинаковых раздетых номеров?