【发布时间】:2016-09-25 08:55:42
【问题描述】:
我正在使用 SQL Server 2012 我有两个如下表
表 1 和表 2 都有很多组,由组列表示。组的名称可能在两个表中都匹配,但可能不匹配。重要的是在表 2 上找到与表 1 上的组中的成员匹配的成员最多的组。
我首先尝试使用 vlookup 执行此操作,但问题是 vlookup 会拉取 Group 列中匹配的第一个条目,而不是匹配最多的组。下面的 vlookup 会拉 BBB,但正确的结果是 CCC。
可能会出现平局。 Table2 上可能有多个组与 Table1 匹配且具有相同数量的成员,因此最好的方法可能是计算匹配数,但是有数千个组,因此对具有计数的列进行排序和筛选并不理想.我需要类似 case 语句的内容,如果存在 MAX(match),那么 Table1 将在派生列 BestMatch 中显示具有 MAX(Match) 的组名。如果该列可以显示表 2 中具有 MAX(Match 可能是一个或多个的所有组。也许它可以用逗号分隔。
如果不是,如果列只能说 tie 并且我可以查找 tie,那么如果这是最佳选择,那将是理想的,当出现 tie 一词时,除了每个匹配的成员之外,它会重复,所以我会知道要查找对于匹配哪些帐户以及匹配的帐户数量的组。
【问题讨论】:
-
最佳匹配是
AAAA。我认为这是一个错字? -
示例表数据很棒。如果你也加上预期的结果就更好了!
-
是 AAAA 是错字应该是 AAA
标签: sql sql-server count match