0

我正在尝试从 Wonderware Historian 获取值,以便在 Report Builder 中读取。我通过 Historian Client Query 获得了下面的 SQL 代码,但此代码直接从 SQL 视图中进行选择。

SET NOCOUNT ON
DECLARE @StartDate DateTime
DECLARE @EndDate DateTime
SET @StartDate = DateAdd(mi,-5,GetDate())
SET @EndDate = GetDate()
SET NOCOUNT OFF
SELECT StateSummaryHistory.TagName, StartDateTime, EndDateTime, Value, vValue
 FROM StateSummaryHistory
 WHERE StateSummaryHistory.TagName IN ('VTIS01_FT04', 'VTIS01_TT344')
 AND wwVersion = 'Latest'
 AND wwRetrievalMode = 'Cyclic'
 AND wwCycleCount = 1
 AND StartDateTime >= @StartDate
 AND EndDateTime <= @EndDate

我需要在已经创建的表中插入数据,以便我可以为报表生成器进行选择,下面是我试图在表中插入的代码:

 INSERT INTO x_TagsDescr
 SELECT StateSummaryHistory.TagName, StartDateTime, EndDateTime, Value, vValue
 FROM StateSummaryHistory
 WHERE StateSummaryHistory.TagName IN ('VTIS01_FT04', 'VTIS01_TT344')

返回以下错误:

列名或提供的值的数量与表定义不匹配。

x_TagsDescr 是我要插入的表。

有人可以帮我吗?

4

1 回答 1

0

插入时提及列名以避免此错误是一个好习惯:

 INSERT INTO x_TagsDescr (<list of column names that match columns in your select>)
 SELECT StateSummaryHistory.TagName, StartDateTime, EndDateTime, Value, vValue
 FROM StateSummaryHistory
 WHERE StateSummaryHistory.TagName IN ('VTIS01_FT04', 'VTIS01_TT344')
于 2021-05-14T19:27:29.413 回答