1

我有一个如下表:

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 组必须合并。这条大链条似乎永远不会结束。

任何建议都非常感谢。

谢谢

4

1 回答 1

0

不确定我是否完全理解了这个问题,但您可以尝试以下方法:

SELECT SUM(GroupID) AS GroupID, ID, Name, Address, AAA, BBB, CCC, ...
FROM MyTable
GROUP BY ID, Name, Address, AAA, BBB, CCC, ...

使用其余列继续SELECT列列表。

于 2013-08-08T16:01:26.527 回答