2013-03-12 52 views
0

是否有任何種類的VBA或SQL可以在此表上運行,從而刪除MS Access中的重複ID?如何通過SQL或VBA刪除MS Access中列中的重複值

所以這樣的:

ID   data1 data2 data3 
a   1  2  3 
a   8  9  10 
a   15  16  17 
a   22  23  24 
b   1  2  3 
b   8  9  10 
b   15  16  17 
b   22  23  24 
b   29  30  31 
c   1  2  3 
c   8  9  10 
c   15  16  17 
c   22  23  24 
c   29  30  31 
c   36  37  38 

應該是這樣的:

ID  data1 data2 data3 
a  1  2  3 
     8  9  10 
     15  16  17 
     22  23  24 
b  1  2  3 
     8  9  10 
     15  16  17 
     22  23  24 
     29  30  31 
c  1  2  3 
     8  9  10 
     15  16  17 
     22  23  24 
     29  30  31 
     36  37  38 
+0

您可以將所有數據列彙總並將結果放入臨時表中。然後刪除主表中的所有內容並將臨時表放回主表中。 – CathalMF 2013-03-12 11:46:38

+0

我需要顯示所有的個人記錄,我只需要刪除第一個和最後一個名字的副本以提高可讀性 – 2013-03-12 11:50:00

+0

如果您實際上不需要刪除它們,但只是創建一個視圖,那麼這很簡單。我發佈了一個SQL語句。 – CathalMF 2013-03-12 11:54:10

回答

3

類似下面應該清除ID列所有,但第一個記錄。您可能需要修改ORDER BY以包含另一列以確保此代碼的運行順序與之後的導出順序相同。

Dim strKey as String 
Dim iCount as Integer 
Dim dbs as DAO.Database 
Dim rst as DAO.Recordset 

strKey = "" 
iCount = 0 
Set dbs = CurrentDb 
Set rst = dbs.OpenRecordset("SELECT * FROM MYTABLE ORDER BY ID") 
If rst.RecordCount > 0 
    rst.MoveFirst 
    Do Until rst.EOF 
     If strKey <> rst!ID Then 
      strKey = rst!ID 
      iCount = 1 
     End If 

     If iCount > 1 Then 
      rst.Edit 
       rst!ID = "" 
      rst.Update 
     End If 

     iCount = iCount + 1 
     rst.MoveNext 
    Loop 
End If 
rst.Close 
Set rst = Nothing 
dbs.Close 
Set dbs = Nothing 
+0

查看你在哪裏陳述rst!ID,如果字段名稱包含空格..... rst!!姓氏。你將如何格式化?我試過[姓]'姓''[姓]'。還是僅僅是不可能的? – 2013-03-12 14:00:31

+0

我認爲'rst.Fields(「Last name」)'應該可以工作 – RichardC 2013-03-12 14:02:34

+0

它仍然說這個項目在集合中沒有找到.....我認爲你對'rst.Fields(「Last name」 )'聲明....別的嗎?我的SQL語句是'Set rst = dbs.OpenRecordset(「SELECT * FROM tblReportFollowUpCallResponses ORDER BY'[Last name]';」)' – 2013-03-12 14:08:21

3

您可以使用視圖

select distinct First Name , Last Name from T1 

和V1 那麼你現在先救這個查詢名稱和姓氏不重複

現在使用的代碼

select * from V1 , T1 where V1.First Name =T1.First Name and V1.Last Name=T1.Last Name 

我希望這有助於你的問題,你有

+1

這是輸出重複的行仍然在名字和姓氏.....我需要隱藏或刪除重複項。 – 2013-03-12 12:09:55

0

這會給你你的第一個名字,姓氏,並與第一和最後一個名字上相關聯的所有數據的總和單排。

SELECT FirstName, LastName, sum(data1), sum(data2), sum(data3) 
FROM MyTableName 
GROUP BY FirstName, LastName 

這將使你的東西象下面這樣:

First Name Last Name data1 data2 data3 
a   z   46  50  54 
b   x   75  80  85 
+1

我不需要總和,我需要在保留每行的同時隱藏重複的名稱 – 2013-03-12 12:02:21

+0

您無法通過SQL查詢來完成此操作。抱歉。有人知道VBA可能會有幫助。 – CathalMF 2013-03-12 12:09:38

相關問題