在存储过程中,我正在创建...
IF OBJECT_ID('tempdb..##SUBOSummary') IS NOT NULL
/*Then it exists*/
DROP TABLE ##SUBOSummary
CREATE TABLE ##SUBOSummary
(
--RowID int not null identity(1,1) primary key,
RowNum int IDENTITY(1,1) NOT NULL,
Dept nvarchar(25) NOT NULL,
Last24 int,
WTD int,
MoTD int,
YTD int
)
然后我想从另一个视图中添加一系列数据,然后我会单独填充其余的数据行:
INSERT INTO ##SUBOSummary SELECT DISTINCT vw_EmployeeDepartment.Dept FROM vw_EmployeeDepartment
我收到以下错误:
列名或提供的值与表定义不匹配。
我猜这是因为我只是通过insert语句填充单个字段。
有没有更好的方法来实现这个目标?
答案 0 :(得分:4)
事实上,错误在这里很清楚:
列名或提供的值与表定义不匹配。
在您的INSERT
声明中,您暗示要在所有列中插入值(因为您没有指定哪一列),但您只在SELECT
中提供了一列那么这个价值在哪里呢? SQL Server不知道。
您需要在INSERT
子句中提供您的列:
INSERT INTO ##SUBOSummary (Dept)
SELECT DISTINCT vw_EmployeeDepartment.Dept
FROM vw_EmployeeDepartment;
然而,另一方面,不要使用全球临时表,它们的表现往往很差。