从两个临时表中选择另一个临时表

时间:2018-01-05 13:15:56

标签: sql-server

我创建了两个临时表,现在我必须将两个表中的数据插入到第三个临时表中,稍后我将在我的过程中使用它。

前两个临时值用常规表中的数据填充,这很好。 但是当我尝试将这两个临时数据中的数据插入我的最终临时表(#3)时,我收到了这个:

  

INSERT语句的选择列表包含的项目数少于   插入列表。 SELECT值的数量必须与数量匹配   INSERT列。

即使我有相同数量的项目,我也会收到此消息。

 CREATE TABLE #3
 (
 Vrsta_Reprograma int,
 Datum_Kreiranja smalldatetime NOT NULL,
 Verzija smallint NULL,
 Zakljucano smallint NULL,
 HostName nvarchar(128) NULL,
 Datum_Izvjestaja varchar(10) NULL,
 Aplikacija varchar(10) NULL,
 OJK varchar(12) NULL,
 PartnerID int NULL


 )

 INSERT INTO #3
 (
 Vrsta_Reprograma,
 Datum_Kreiranja,
 Verzija,
 Zakljucano,
 HostName,
 Datum_Izvjestaja,
 Aplikacija,
 OJK,
 PartnerID

 )
 SELECT Vrsta_Reprograma 
   FROM #1

 SELECT (
 Datum_Kreiranja,
 Verzija,
 Zakljucano,
 HostName,
 Datum_Izvjestaja,
 Aplikacija,
 OJK,
 PartnerID,
 )
    FROM #2

这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

  

即使我有相同数量的物品

不,你不要:

  

插入#3    (    Vrsta_Reprograma,    Datum_Kreiranja,    Verzija,    Zakljucano,    主机名,    Datum_Izvjestaja,    Aplikacija,    OJK,    PARTNERID,

= 9列(Vista_Reprograma,...,PartnerID)。

  

)    选择Vrsta_Reprograma      来自#1

= 1列(Vrsta_Reprograma)。

确保您的SELECT子句与INSERT INTO子句的列数相同。您可能想写的是:

 INSERT INTO #3
 (
 Vrsta_Reprograma,
 Datum_Kreiranja,
 Verzija,
 Zakljucano,
 HostName,
 Datum_Izvjestaja,
 Aplikacija,
 OJK,
 PartnerID
 )
 SELECT #1.Vrsta_Reprograma, 
        #2.Datum_Kreiranja,
        ...
        #2.PartnerID,
 )
    FROM #1 INNER JOIN #2 ON ...join conditions which matches rows from #1 to those from #2...