删除MS Access中不完全匹配的重复记录

时间:2017-06-23 15:31:59

标签: ms-access

我正在处理我正在导入MS Access的Excel电子表格。它们包括客户名称,出生日期,一些其他个人信息和订单信息。相同的客户通常拥有多个独特的订单。我正在创建一个只是唯一客户端的表(稍后我将链接到订单表),因此当我从Excel导入数据时,我想删除重复的客户端记录,保留一个。我想在姓名和出生日期上与他们匹配。我遇到的问题是某些客户端名称是完全不匹配的字符串。

例如:

Name            DOB
----            ---
DOE,JOHN        1/1/1960
DOE,JOHN L      1/1/1960
JOHNSON,PAT     12/1/1945
SMITH,BETTY     2/1/1935

在上面的集合中,我想将其限制为仅三个记录,并删除多余的John Doe记录。

我基本上只希望在空格之前查看客户端名称。 我不会反对完全失去中间的首字母,所以如果有一种方法可以把它砍掉,那也行得通。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

听起来你最简单的选择就是切断任何中间人。

您需要按以下方式处理。

  1. 完成所有操作后使用选择DISTINCT并说。

  2. 如果您使用InStr函数Syntax HERE,则可以在名字后面搜索空格。

  3. 然后您可以选择仅使用左侧功能选择左侧的内容(左侧减去1以不包括空格)。如果找不到空格,你会发现错误,所以add和iif语句只输出名称。

  4. 在查看数据之后,您需要删除第1列(在下面的示例中)以及将Expr1代码直接插入到iif语句中,因此最后您将只有两列: DOB和Expr2(或重命名AS名称)

  5. 以下是一个例子:

        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;
    
    韦恩打败了我......