OK、最も簡単で最速の方法は、VBAを使用して複数の追加クエリを使用することだと思います。以下のコードは、DuplicateNoごとに追加クエリをN回実行します。ここで、N = DuplicateNoであり、DuplicateNoフィールドでフィルタリングします。
したがって、DuplicateNo = 1の場合はすべてのレコードをコピーして1回追加クエリを実行し、DuplicateNo=2の場合はクエリを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