2017-06-23 111 views
0

我正在使用我導入到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 

在上面的一組,我想將其限制在短短三年的記錄和除去多餘李四記錄。

我基本上只想看空間之前的客戶端名稱。 我不會反對完全失去中間的首字母,所以如果有辦法將它切斷,那也可以。我怎樣才能做到這一點?

+0

您可以使用類似下面的查詢,以獲得名字。我在第一個'Doe,John'中假設根本沒有空間。 MyName:IIf(InStr(1,[Name1],「」)= 0,[Name1],Left([name1],InStr(1,[name1],「」)-1)) –

回答

0

聽起來像你最簡單的選擇,實際上是切斷任何中間啓動。

您需要按如下方式處理。

  1. 使用選擇DISTINCT當所有完成和說。

  2. 如果您使用InStr功能Syntax HERE,您可以搜索名字後面的空格。

  3. 然後,您可以選擇僅使用左側功能選擇左側的內容(左側減1以免包含空白)。如果找不到空格,您將會遇到錯誤,因此只需添加iif語句即可輸出名稱。

  4. 查看完數據之後,需要刪除第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; 

魯尼打我吧..

+0

謝謝!有效!發佈後我意識到我不想完全切掉中間的首字母(因爲其中一些也是「Jr.」或「Sr.」),但是我可以比較切掉的位和DOB,它將起作用大。 – mlaser