在insert到temp-table中使用subselect

时间:2013-10-01 09:19:08

标签: sql sql-server sql-server-2008

我正在尝试在一个插入中将一个子选择插入到临时表中。事情是我想使用一个插入,在这个插入中我想将我的子选择插入临时表的第三列。我知道在第一个选择中我只有2个参数,诀窍是第三个。如何使用1个插入和1个子选择进入col 3。我收到错误消息

Msg 120, Level 15, State 1, Procedure Stored_Procedure, 
Line 24 The select list for the INSERT statement 
contains fewer items than the insert list. The         
number of SELECT values must match the number of INSERT columns.

这是我的代码。

insert into #Temp (Col01,Col02,Col03)
select X, Y from Table
where Y = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
and Z = '8:00' (Select X from Table 
where Datum = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
and Z = '17:00')

2 个答案:

答案 0 :(得分:0)

参数个数与no值

不匹配

插入#Temp(Col01,Col02,Col03) - 参数3 选择X,Y - 值2

  insert into #Temp (Col01,Col02,Col03)
  select X, Y , Z from Table
  where Y = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
  and Z = '8:00' (Select X from Table 
  where Datum = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
 and Z = '17:00')

答案 1 :(得分:0)

这就是我解决它的方式..如果你想使用1个子插入和subselect,你应该这样做。

    insert into #ExcelPrint (Col01,Col02,Col03)
    select 
    Z,
    X as X_8, 
    (Select Kl_17.X from Table as Kl_17
    where Kl_17.Y = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
    and Kl_17.X = '17:00' 
    and Kl_17.Z = Table.Z) 
    as X_17
    from Table
    where Datum = CONVERT(varchar,Dateadd(DD,-0,GETDATE()),112)
    and Z = '8:00'