删除MS Access中不完全匹配的重复记录
我正在使用我导入到MS Access的Excel电子表格。它们包括客户姓名,出生日期,其他个人信息和订单信息。相同的客户通常有多个独特的订单。我创建的表格只是唯一的客户端(稍后我将链接到订单表),因此当我从Excel导入数据时,我想删除重复的客户端记录,保留一个。我想匹配他们的姓名和出生日期。我遇到的问题是某些客户端名称是不完全匹配的字符串。删除MS Access中不完全匹配的重复记录
例如:
Name DOB
---- ---
DOE,JOHN 1/1/1960
DOE,JOHN L 1/1/1960
JOHNSON,PAT 12/1/1945
SMITH,BETTY 2/1/1935
在上面的一组,我想将其限制在短短三年的记录和除去多余李四记录。
我基本上只想看空间之前的客户端名称。 我不会反对完全失去中间的首字母,所以如果有办法将它切断,那也可以。我怎样才能做到这一点?
听起来像你最简单的选择,实际上是切断任何中间启动。
您需要按如下方式处理。
使用选择DISTINCT当所有完成和说。
如果您使用InStr功能Syntax HERE,您可以搜索名字后面的空格。
然后,您可以选择仅使用左侧功能选择左侧的内容(左侧减1以免包含空白)。如果找不到空格,您将会遇到错误,因此只需添加iif语句即可输出名称。
查看完数据之后,需要删除第1列(在下面的例子中)以及将Expr1代码直接插入到iif语句中,所以最后只有两列:DOB和EXPR2(或重命名为名称)
下面是一个例子:
SELECT DISTINCT
Table1.Name,
Table1.DOB,
InStr(1,[Table1].[Name]," ",1) AS Expr1,
IIf([expr1]>0,Left([Table1].[Name],[Expr1]-1),[Table1].[Name]) AS Expr2
FROM Table1;
鲁尼打我吧..
谢谢!有效!发布后我意识到我不想完全切掉中间的首字母(因为其中一些也是“Jr.”或“Sr.”),但是我可以比较切掉的位和DOB,它将起作用大。 – mlaser
您可以使用类似下面的查询,以获得名字。我在第一个'Doe,John'中假设根本没有空间。 MyName:IIf(InStr(1,[Name1],“”)= 0,[Name1],Left([name1],InStr(1,[name1],“”)-1)) –