【问题标题】:Select from two temp tables into another temp table从两个临时表中选择到另一个临时表
【发布时间】:2018-01-05 13:15:56
【问题描述】:

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

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

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

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

 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

这是正确的做法吗?

【问题讨论】:

  • SQL 中似乎出现了一些问题,您将 #1 中的单个字段插入到 #3 中,然后在 #2 上执行不相关的选择。您不会以任何形式加入 #1 到 #2。你是故意的吗?

标签: sql-server


【解决方案1】:

即使我有相同数量的项目

不,你没有:

插入 #3 ( Vrsta_Reprograma, Datum_Kreiranja, 维齐亚, 扎克鲁卡诺, 主机名, Datum_Izvjestaja, 阿普利卡齐亚, 奥杰克, 合作伙伴 ID,

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

) SELECT 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...

【讨论】:

  • 下面还有一个,SELECT (Datum_Kreiranja, Verzija, Zakljucano, HostName, Datum_Izvjestaja, Aplikacija, OJK, PartnerID, ) FROM #2
  • 这个问题看起来更像是一个合乎逻辑的问题 - 缺少连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多