背景 - 私は一連の顧客データを持っており、文字列照合アルゴリズムを使用して類似性をすべてのレコードで比較しています。お互いに関連する結果を直接または関連付けによってグループ化し、グループごとに一意のIDを適用する必要があります。文字列照合後のSQL Serverレコードリンケージ
問題 - 私は一緒にレコードをリンクするための方法を考えると、グループごとに固有のIDを適用することはできません
例
データが現在発見されている試合のために、このようになります。 (MatchScoreはここの問題とは関係ありませんが、データがどこから来たのかを示すためです)。
+-------------+-------------+------------+
| CustomerID1 | CustomerID2 | MatchScore |
+-------------+-------------+------------+
| 2021000 | 2707799 | 0.075 |
| 2021000 | 3856308 | 0.082 |
| 774062 | 774063 | 0.041 |
| 998328 | 2278386 | 0.063 |
| 998328 | 998329 | 0.058 |
| 998329 | 2278386 | 0.030 |
+-------------+-------------+------------+
下位3レコードはすべてリンクされているため、同じIDを関連付けてもらいたいと考えています。
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
を生成するためのコードのように見てみたいものです
私はレコードを一緒にリンクする方法を考えることができないと言うように、私はあらゆる種類の結合を試みたが、ユーレカの瞬間は決して来ない。どうぞお助けください。 DENSE_RANK()
機能が提供されています:
おかげ
下位3レコードが意味するものはリンクされていますか? 'CustomerID1'が複数の' CustomerId2'値とともにリストされているからです。なぜ、 'CustomerID1' 998328と998329が同じ' ID'値で終わるのですか? – Taryn
その3つの別々のレコードは、顧客998328と2278386が一致するため、998328と998329が一致するため、998329と2278386が一致します。したがって、3つすべてが互いに一致することが示されているので、同じIDを取得してください。 – DataPro