【发布时间】:2013-08-09 00:01:26
【问题描述】:
我有一张如下表:
GroupID ID Name Address AAA BBB CCC Other Columns
1 00111 AAA ----- --- --- --- ------------
1 00122 BBB ----- --- --- --- ------------
1 00133 CCC ----- --- --- --- ------------
2 00144 DDD ----- --- --- --- ------------
2 00155 EEE ----- --- --- --- ------------
3 00111 AAA ----- --- --- --- ------------
3 00177 GGG ----- --- --- --- ------------
4 00188 PPP ----- --- --- --- ------------
4 00199 OOO ----- --- --- --- ------------
4 00177 GGG ----- --- --- --- ------------
所以基本上所有具有相同组 ID 的记录都是潜在的重复记录。具有相同 ID 的记录可能出现在不同的组中。我需要根据ID 重新组合它们,并使它们只在表格中出现一次。
如果ID'00111'在组 1 和组 3 中,则这两个组的记录必须重新组合并具有唯一的 GroupID。请注意,在第 3 组中,ID '00177' 也在第 4 组中,因此第 3 组和第 4 组必须重新组合。
所以结果如下:
GroupID ID Name Address AAA BBB CCC Other Columns
1+3+4 00111 AAA ----- --- --- --- ------------
1+3+4 00122 BBB ----- --- --- --- ------------
1+3+4 00133 CCC ----- --- --- --- ------------
1+3+4 00177 GGG ----- --- --- --- ------------
1+3+4 00188 PPP ----- --- --- --- ------------
1+3+4 00199 OOO ----- --- --- --- ------------
2 00144 DDD ----- --- --- --- ------------
2 00155 EEE ----- --- --- --- ------------
这很有挑战性,这个表有超过 300 万条记录,但只有 200 万个唯一 ID。
我正在考虑再添加一列作为Master Group ID 来标记记录并合并它们。但是作为提供的示例,'00111' 在第 1 组和第 3 组中,因此第 1 组和第 3 组必须合并,但在第 3 组中,另一条记录 '00177' 出现在第 4 组中,因此第 1,3 组和第 4 组必须合并。这条大链条似乎永远不会结束。
非常感谢任何建议。
谢谢
【问题讨论】:
标签: sql sql-server tsql