基于计数器的SQL复制插入记录

基于计数器的SQL复制插入记录,sql,ms-access,insert,duplicates,Sql,Ms Access,Insert,Duplicates,如果这是可能的,我需要根据DuplicateNo字段中指示的内容插入/复制记录。举例来说,如果我有此表: 表“客户”: CustNo CustName DuplicateNo 0001 John 2 0002 Smith 3 我需要这样的输出(新的空表): 表'DupliTable: CustNo CustName 0001 John 0001 John 0002

如果这是可能的,我需要根据DuplicateNo字段中指示的内容插入/复制记录。举例来说,如果我有此表:

表“客户”:

CustNo      CustName       DuplicateNo
0001        John           2
0002        Smith          3
我需要这样的输出(新的空表): 表'DupliTable:

CustNo      CustName
0001        John
0001        John
0002        Smith
0002        Smith
0002        Smith

谢谢大家的好主意。非常感谢您的帮助。

好的,我认为最简单和最快的方法是使用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

在Access中,我认为您唯一的选择是编写一些代码来实现这一点。下面是对记录进行迭代的示例:

是否存在某种不能使用循环的约束?没有约束。只要我能得到如图所示的输出,我就使用MS Access数据库