Фон - У меня есть набор данных о клиентах и используется алгоритм сопоставления строк для сравнения всех записей для сходства. Затем мне нужно сгруппировать результаты, которые связаны друг с другом либо напрямую, либо путем ассоциации, и применять уникальный идентификатор для каждой группы.Запись SQL Server после привязки строк
Проблема - Я не могу придумать способ, чтобы связать записи вместе и применить уникальный идентификатор для каждой группы
Примера
данные в настоящее время выглядит следующим образом для матчей, которые были найдены (MatchScore не относится к проблеме здесь, а демонстрирует, откуда взялись данные).
Все 3 записи связаны друг с другом, поэтому я хочу, чтобы они имели одинаковый идентификатор.
visual image of these records all being related
Это то, что я хочу, чтобы данные выглядеть
+----+-------------+-------------+------------+
| ID | CustomerID1 | CustomerID2 | MatchScore |
+----+-------------+-------------+------------+
| 1 | 998328 | 2278386 | 0.063 |
| 1 | 998328 | 998329 | 0.058 |
| 1 | 998329 | 2278386 | 0.030 |
| 2 | 2021000 | 2707799 | 0.075 |
| 2 | 2021000 | 3856308 | 0.082 |
| 3 | 774062 | 774063 | 0.041 |
+----+-------------+-------------+------------+
или аналогично
+----+------------+
| ID | CustomerID |
+----+------------+
| 1 | 2278386 |
| 1 | 998328 |
| 1 | 998329 |
| 2 | 2021000 |
| 2 | 2707799 |
| 2 | 3856308 |
| 3 | 774062 |
| 3 | 774063 |
+----+------------+
кода для создания Пример таблицы
select '998328' as CustomerID1,'998329' as CustomerID2,'0.058' as MatchScore
into #tmp
union
select '998328' as CustomerID1,'2278386' as CustomerID2,'0.063' as MatchScore
union
select '998329' as CustomerID1,'2278386' as CustomerID2,'0.030' as MatchScore
union
select '2021000' as CustomerID1,'2707799' as CustomerID2,'0.075' as MatchScore
union
select '2021000' as CustomerID1,'3856308' as CustomerID2,'0.082' as MatchScore
union
select '774062' as CustomerID1,'774063' as CustomerID2,'0.041' as MatchScore
select * from #tmp
Как я уже сказал, я не могу подумать, как связать записи вместе, я пробовал всевозможные объединения, но момент эврики никогда не приходит. Пожалуйста, помогите.
Благодаря
Что вы подразумеваете под нижними 3 записями? Связаны ли они только потому, что «CustomerID1» указан с несколькими значениями «CustomerId2»? И почему «CustomerID1» 998328 и 998329 имеют одинаковое значение «ID»? – Taryn
его, потому что 3 отдельные записи означают, что игроки 998328 и 2278386 соответствуют, 998328 и 998329 матчам, 998329 и 2278386 матчам. Поэтому показано, что все 3 соответствуют друг другу, поэтому получите одинаковый идентификатор. – DataPro