所以我有一个链接到记录 ID 的别名表。我需要找到具有唯一记录 ID 的重复别名。为了更好地解释:
ID Alias Record ID
1 000123 4
2 000123 4
3 000234 4
4 000123 6
5 000345 6
6 000345 7
对该表的查询结果应该是
000123 4 6
000345 6 7
表示记录 4 和 6 的别名均为 000123,记录 6 和 7 的别名均为 000345。
我正在研究使用 GROUP BY 但如果我按别名分组,那么我无法选择记录 ID,如果我同时按别名和记录 ID 分组,它只会返回本示例中的前两行,其中两列都是重复的。我找到的唯一解决方案,这是一个让我的服务器崩溃的可怕解决方案,是对所有数据进行两次不同的选择,然后加入它们
ON [T_1].[ALIAS] = [T_2].[ALIAS] AND NOT [T_1].[RECORD_ID] = [T_2].[RECORD_ID]
有没有更好的解决方案?例如,在几十万条记录上运行时不会使我的服务器崩溃?
原文由 user1301877 发布,翻译遵循 CC BY-SA 4.0 许可协议
看起来你有两个要求:
第一个比第二个容易得多。这里有一些 SQL 应该可以让你第一次到达你想要的地方:
现在,至于第二个。如果您对此表格中的数据感到满意:
…你可以停在那里。否则,事情会变得棘手。
PIVOT 命令 不一定 会帮助您,因为它试图解决与您的问题不同的问题。
我假设您不一定能预测每个
Alias
有多少重复Record ID
值,因此不知道您需要多少列。如果您只有两个,那么将它们中的每一个显示在一个列中将成为一个相对微不足道的练习。如果你有更多,我会敦促你考虑这些记录的目的地(报告?网页?Excel?)在水平显示它们方面是否比 SQL Server 在返回它们方面做得更好水平。