好的,我认为最简单和最快的方法是使用 VBA 使用多个附加查询。下面的代码针对每个 DuplicateNo 运行附加查询 N 次,其中 N = DuplicateNo,然后对 DuplicateNo 字段进行过滤。
因此,它会在复制所有 DuplicateNo = 1 的记录时运行追加查询,在 DuplicateNo = 2 的情况下运行查询两次,依此类推。
追加查询将运行所有唯一 DuplicateNo 值的总和。因此,如果可能的值为 1-4,则查询将运行 10 次。
Sub FillOutputTable()
Dim RS As Recordset
Dim strSQL As String
Dim N As Integer
Dim I As Integer
strSQL = ""
strSQL = strSQL & "SELECT DuplicateNo "
strSQL = strSQL & "FROM [table-input] "
strSQL = strSQL & "GROUP BY [table-input].DuplicateNo "
Set RS = CurrentDb.OpenRecordset(strSQL)
Do
N = RS("DuplicateNo")
For I = 1 To N
strSQL = ""
strSQL = strSQL & "INSERT INTO [table-output] ( CustNo, CustName ) "
strSQL = strSQL & "SELECT [table-input].CustNo, [table-input].CustName "
strSQL = strSQL & "FROM [table-input] "
strSQL = strSQL & "WHERE [table-input].DuplicateNo=" & N
CurrentDb.Execute strSQL
Next I
RS.MoveNext
Loop Until RS.EOF
RS.Close
Set RS = Nothing
End Sub