Sql ms访问合并行
这似乎应该是一个简单的解决方案,但出于某种原因,我无法对此进行思考 我有一个表,它的主键是Sql ms访问合并行,sql,ms-access,sum,Sql,Ms Access,Sum,这似乎应该是一个简单的解决方案,但出于某种原因,我无法对此进行思考 我有一个表,它的主键是USER\u FULL\u NAME,右边是大约15列各种度量。我有一些例子,其中多个用户名拼写错误,但实际上应该汇总到同一行。例如,“David Hands”可以拼写为“Davide Handes”,而“Bobby Orr”可以拼写为“Boby Or”。表中总共大约有150行,但大约有136行是唯一的用户名 如何编写SQL查询,将150行合并到唯一的136行中,其中应该合并的用户\u全名实际上是合并的
USER\u FULL\u NAME
,右边是大约15列各种度量。我有一些例子,其中多个用户名
拼写错误,但实际上应该汇总到同一行。例如,“David Hands”可以拼写为“Davide Handes”,而“Bobby Orr”可以拼写为“Boby Or”。表中总共大约有150行,但大约有136行是唯一的用户名
如何编写SQL查询,将150行合并到唯一的136行中,其中应该合并的用户\u全名
实际上是合并的
我在一个名为TPS\u User\u NAME
的矩阵表中添加了另一列,一列用于User\u FULL\u NAME
,另一列用于DUPLICATE\u User\u FULL\u NAME
。这是我提出的问题,但似乎不起作用:
select
tun.user_full_name,
sum(ad.processed_mss)
from all_data ad left join tps_user_names tun on ad.user_full_name = tun.user_full_name and ad.user_full_name = tun.duplicate_user_full_name
where ad.user_full_name = 'A' and ad.user_full_name = 'A1'
group by tun.user_full_name
要在实践中正确处理这一问题绝非易事,即使人们很容易注意到“相似”并因此采用相同的名称
想想看——如果你用算法来做这件事,你会有很多临界情况,你——或者计算机——需要打电话:乔恩·史密斯和约翰·史密斯或者乔恩·史密斯是同一个人吗?大概也许不是
除非您有其他标识符,否则无法知道,这意味着您将很难从中获得有意义的聚合。进行模糊文本匹配的一种方法是计算Levenshtein距离,这是一种量化两个字符串之间的距离的方法,但是由于上述原因,您仍然可能会得到误报
如果您的问题是一个反复出现的问题(例如,需要频繁更新),您可能需要重新考虑您的数据库结构,使用一个不是实际名称的主键,并查看如何将新条目添加到表中。如果可能的话,这是评估您是否正在处理新用户名的理想时间
如果是一次性的,我会查询出16行中确实有重复项的行,并分别进行评估。在实践中,要正确处理这一问题绝非易事,即使很容易发现“相似”并因此采用相同的名称
想想看——如果你用算法来做这件事,你会有很多临界情况,你——或者计算机——需要打电话:乔恩·史密斯和约翰·史密斯或者乔恩·史密斯是同一个人吗?大概也许不是
除非您有其他标识符,否则无法知道,这意味着您将很难从中获得有意义的聚合。进行模糊文本匹配的一种方法是计算Levenshtein距离,这是一种量化两个字符串之间的距离的方法,但是由于上述原因,您仍然可能会得到误报
如果您的问题是一个反复出现的问题(例如,需要频繁更新),您可能需要重新考虑您的数据库结构,使用一个不是实际名称的主键,并查看如何将新条目添加到表中。如果可能的话,这是评估您是否正在处理新用户名的理想时间
如果是一次性的,我会查询出16行中确实有重复项的行,并分别进行评估。在实践中,要正确处理这一问题绝非易事,即使很容易发现“相似”并因此采用相同的名称
想想看——如果你用算法来做这件事,你会有很多临界情况,你——或者计算机——需要打电话:乔恩·史密斯和约翰·史密斯或者乔恩·史密斯是同一个人吗?大概也许不是
除非您有其他标识符,否则无法知道,这意味着您将很难从中获得有意义的聚合。进行模糊文本匹配的一种方法是计算Levenshtein距离,这是一种量化两个字符串之间的距离的方法,但是由于上述原因,您仍然可能会得到误报
如果您的问题是一个反复出现的问题(例如,需要频繁更新),您可能需要重新考虑您的数据库结构,使用一个不是实际名称的主键,并查看如何将新条目添加到表中。如果可能的话,这是评估您是否正在处理新用户名的理想时间
如果是一次性的,我会查询出16行中确实有重复项的行,并分别进行评估。在实践中,要正确处理这一问题绝非易事,即使很容易发现“相似”并因此采用相同的名称
想想看——如果你用算法来做这件事,你会有很多临界情况,你——或者计算机——需要打电话:乔恩·史密斯和约翰·史密斯或者乔恩·史密斯是同一个人吗?大概也许不是
除非您有其他标识符,否则无法知道,这意味着您将很难从中获得有意义的聚合。进行模糊文本匹配的一种方法是计算Levenshtein距离,这是一种量化两个字符串之间的距离的方法,但是由于上述原因,您仍然可能会得到误报
如果您的问题是一个反复出现的问题(例如,需要频繁更新),您可能需要重新考虑您的数据库结构,使用一个不是实际名称的主键,并查看如何将新条目添加到表中。如果可能的话,这是评估您是否正在处理新用户名的理想时间
对于一次性的,我会查询出16行中有重复项的行,并分别进行评估。严格来说,这不是一个编码解决方案,但您可以创建一个矩阵表,它有两列,重复的用户名和实际的用户名,左键连接到此表,并在进行聚合时使用实际的用户名。除了重新访问您的模式或更正表本身的错误之外,我认为这是最好的方法
SELECT Nz(tun.user_full_name, ad.user_full_name) As user_full_name_agg,
SUM(ad.processed_mss)
FROM all_data ad LEFT JOIN tps_user_names tun
ON ad.user_full_name = tun.duplicate_user_full_name
GROUP BY Nz(tun.user_full_name, ad.user_full_name);