插入到选择子查询返回的值超过1

时间:2017-03-23 20:16:37

标签: sql sql-server insert-into

我有以下代码,当表Sub MatchCustomersToCase() Dim lookUpValue 'step 1 select sheet 1 the spreadsheet. Sheet1.Select 'step 2 loop customer id For I = 1 To 12 Set workingcell = Worksheets("Sheet1").Cells(I, 2) lookUpValue = workingcell.Value cellAddress = workingcell.Address() 'select sheet 2 Sheet2.Select 'find the value in sheet 2 Call Find_value_in_sheet2(lookUpValue, cellAddress) Next End Sub Sub Find_value_in_sheet2(somevalue, fromAddress) Dim FindString As String Dim Rng As Range Dim caseType As String Dim CaseValue As String Dim listOfValues As Variant listOfValues = Array(somevalue) If Trim(somevalue) <> "" Then With Sheets("Sheet2").Range("A:A") For I = LBound(listOfValues) To UBound(listOfValues) Set Rng = .Find(What:=listOfValues(I), _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) If Not Rng Is Nothing Then FirstAddress = Rng.Address Do Application.Goto Rng, True caseType = Rng.Offset(0, 1).Value If Trim(caseType) = "Case 1" Then CaseValue = Rng.Offset(0, 2).Value Sheet1.Range(fromAddress).Offset(0, 1).Value = CaseValue ElseIf Trim(caseType) = "Case 2" Then CaseValue = Rng.Offset(0, 2).Value Sheet1.Range(fromAddress).Offset(0, 2).Value = CaseValue ElseIf Trim(caseType) = "Case 3" Then CaseValue = Rng.Offset(0, 2).Value Sheet1.Range(fromAddress).Offset(0, 3).Value = CaseValue ElseIf Trim(caseType) = "Case 4" Then CaseValue = Rng.Offset(0, 2).Value Sheet1.Range(fromAddress).Offset(0, 4).Value = CaseValue ElseIf Trim(caseType) = "Case 5" Then CaseValue = Rng.Offset(0, 2).Value Sheet1.Range(fromAddress).Offset(0, 5).Value = CaseValue End If Set Rng = .FindNext(Rng) Loop While Not Rng Is Nothing And Rng.Address <> FirstAddress End If Next I End With End If End Sub 超过1行时,它会给我一个错误。有什么想法吗?

@ListaDeProducto

表架构

insert into Solicitud_Plastico_Interna_Detalle(
              IDSolicitud_Plastico_Interna
              ,IDTipo_Producto
              ,Cantidad_Solicitada
              ,Create_User
              ,Create_Date
              ,Contingencia
              ,Total
  )
select 
  @IdSolicitud
  ,IDTipo_Producto
  ,Cantidad_Requerida
  ,@USUARIO 
  ,getdate()
  ,Contingencia
  ,Total
from @ListaDeProducto

1 个答案:

答案 0 :(得分:0)

我仍然打赌桌子上有一些触发器。

那你为什么不尝试创建一个新表来证明这个查询可以用多行

CREATE TABLE Solicitud_Plastico_Temporal AS (              
    select 
      @IdSolicitud as IDSolicitud_Plastico_Interna
      ,IDTipo_Producto
      ,Cantidad_Requerida
      ,@USUARIO as Create_User
      ,getdate() as Create_Date
      ,Contingencia
      ,Total
    from @ListaDeProducto
)