首頁 | 關於知識網 | 會員規範 | 知識地圖| 本站連結 | JACKSOFT | 加入會員 |
電腦稽核 >> 電腦稽核軟體討論區 >>[分享]如何比對兩個不同檔案中的相同欄位?
[分享]如何比對兩個不同檔案中的相同欄位?

大家好,我剛接觸ACL不久,雖然我覺得ACL應該滿簡單的,但最近遇到了一些困擾

目前手上有3萬筆付款資料和150個員工資料

我想要將付款資料中抓地址與員工資料裡的地址進行比對

如果有任何員工資料中的地址符合付款資料中的地址,就把付款資料抓出來

這些付款資料是一個INX格式的檔案,員工資料則是excel的檔案

我試著將付款資料當作primary,把這些table作join,但是問題來了,我沒辦法把員工資料選作secondary

我也試過用relate作,但還是沒辦法得到期望的結果

另外還試過在以上的步驟中使用dummy data,一樣沒有辦法,所以一定是自己哪邊做錯了

對了,在我比較這些地址前,我創造了一個新的欄位,只取地址的前13個字,目的是要讓他短一點(用SUBSTRING)

不知道有沒有人能夠給我一點建議? 謝謝!!!


3
 
 

   
相關標籤
   
回文 #1
回覆會員暱稱:找自己
點數:60
等級:初學者

榮譽勳章:初學者
發文篇數:3
回文時間:2008-12-28 16:44:57

我換另一種方法介紹好了,對象是你的地址欄位 將所有空白和不是 A~Z 與 0~9 字母挑掉 以擷取字串功能將剩下來的部分,擷取出字母中最開始的N個數字(例如5~10) 將員工資料與付款資料做join,key就是上一步中擷取出來的那幾個字母 這個想法是只比較地址中的數字與街名中最開始的幾個字母。 因為只有150個員工,所以這應該會是個比較快的方法 (至少你可以得到一些結果) 當然,fuzzy dupes的技術是比我所提的方法還要細更多,而且更複雜 scanscar
   
回文 #2
回覆會員暱稱:kakasa
點數:2090
等級:專家

榮譽勳章:專家
發文篇數:77
回文時間:2008-12-28 16:29:50

修~我假設你正在以地址當作Key來做Join,有許多不同類型的Join,在你的問題中,我會試著Join所有主鍵(付款資料的欄位當主檔)。 這樣你會有所有macth和不match的主檔資料,確定你有使用第二個檔案的欄位,然後以Emp_address < > " " 篩選你Join後的結果
   
回文 #3
回覆會員暱稱:修
點數:140
等級:初學者

榮譽勳章:初學者
發文篇數:7
回文時間:2008-12-28 16:20:17

那請問我該如何確定自己可以正確地join這些table?? 我已經試過使用dummy data,然後把這些table做關聯和join(雖然都失敗了) 我想應該是哪邊做錯了才會這樣吧........
   
回文 #4
回覆會員暱稱:miniapple
點數:230
等級:初學者

榮譽勳章:初學者
發文篇數:10
回文時間:2008-12-28 16:11:49

因為縮寫和拼音錯誤的不同,所以我傾向開始時先使用fuzzy dupe測試,接下來才使用scanscar的方法做 另外也可以試看看一開始就先用scanscar的方法,但是function裡不要包含數字,如此你可以先只比對街名,然後等到你得到想要的街名紀錄後,再來考慮接下來要怎麼做
   
回文 #5
回覆會員暱稱:找自己
點數:60
等級:初學者

榮譽勳章:初學者
發文篇數:3
回文時間:2008-12-28 15:52:15

HI, 我會建議你使用以下這種格式來擷取特定子字串 SUBSTRING(INCLUDE(UPPER(ALLTRIM(add)),"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ") + BLANKS(13), 1, 13) 這個alltrim function會將頭尾的空白去掉。以上的function會將所有開頭字母變成以上格式。裡面包含的function則會確定你的地址中,只會有數字與大寫字母。有沒有空白其實不太重要,不過我喜歡開始個add < 13的字母,如此這個substing function跑出來的結果才會大於等於13個字母。 希望我的這篇回應對你有點幫助 :) scanscar
   
回文 #6
回覆會員暱稱:修
點數:140
等級:初學者

榮譽勳章:初學者
發文篇數:7
回文時間:2008-12-24 00:33:44

kakasa, 謝謝你的幫忙 稍微研究一下fuzzy duplicate script後,我覺得這個東西比我所需要的結果還複雜(而且我被script混淆了),因為我只是想要比對地址這個欄位 我檢查過付款和員工這兩個table的地址欄位了,也確定他們是一樣的(例如length, category等) 另外我使用SUBSTRING創造了一個較短的地址欄位(只取前13個字),先將table作關聯,然後試著用MATCH, FIND, "=" 和任何我想的到的方法來比對地址這個欄位 我也試著用join的方式,但一樣失敗......我想自己一定是做錯了才無法得到希望的結果 我已經試過用這個短的地址欄位當作兩個table的primary key,所以想請問一下,是不是還有什麼步驟被我忽略了呀???如果是,那我應該用什麼當作primary key和secondary key呢???
   
回文 #7
回覆會員暱稱:kakasa
點數:2090
等級:專家

榮譽勳章:專家
發文篇數:77
回文時間:2008-12-24 00:09:05

這邊有些選擇可以供你參考,當然對Table作Relate和Join都是選擇之一,不過在這兩種方法中,你需要確定被選為Key的欄位是一樣的。 另外你可以試看看Fuzzy Dupes script
網站建議與問題回報 | 隱私權政策 | 網站管理規範 | 條款與政策