各クラスターのすべてのメンバーがわかっているときに、クラスターの数を計算しようとしています。
この問題を解決するには、SqlServer2008の関数が必要です。
私のテーブルには、次のような1,400万を超える個別のレコードがあります。
CREATE TABLE Test
(
F1 varchar(5),
F2 varchar(5)
)
INSERT INTO TEST ( F1, F2) VALUES ( 'A', 'B')
INSERT INTO TEST ( F1, F2 ) VALUES ( 'A', 'K')
INSERT INTO TEST ( F1, F2) VALUES ( 'C', 'H')
INSERT INTO TEST ( F1, F2 ) VALUES ( 'D', 'B')
INSERT INTO TEST ( F1, F2 ) VALUES ( 'F', 'I')
INSERT INTO TEST ( F1, F2 ) VALUES ( 'F', 'B')
INSERT INTO TEST ( F1, F2 ) VALUES ( 'D', 'H' )
INSERT INTO TEST ( F1, F2 ) VALUES ( 'E', 'G' )
INSERT INTO TEST ( F1, F2 ) VALUES ( 'G', 'L' )
ご了承ください:
If A=B AND A=K THEN B=K
IF E=G AND G=L THEN E=L
これで、関数の出力は次のようになります。
ClusterNumber--- point
1---A
1---B
1---k
1---D
1---F
1---I
1---H
1---C
2---E
2---G
2---L
解決策は再帰関数になると思いますが、それはわかりません。