INSERT INTO,但保留空白列?

时间:2018-05-24 07:37:41

标签: sql-server tsql stored-procedures

在存储过程中,我正在创建...

    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语句填充单个字段。

有没有更好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:4)

事实上,错误在这里很清楚:

  

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

在您的INSERT声明中,您暗示要在所有列中插入值(因为您没有指定哪一列),但您只在SELECT中提供了一列那么这个价值在哪里呢? SQL Server不知道。

您需要在INSERT子句中提供您的列:

INSERT INTO ##SUBOSummary (Dept)
SELECT DISTINCT vw_EmployeeDepartment.Dept
FROM vw_EmployeeDepartment;

然而,另一方面,不要使用全球临时表,它们的表现往往很差。