Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server INSERT INTO SELECT给定值:提供的值的列名或数目与表定义不匹配_Sql Server_Common Table Expression_Insert Into - Fatal编程技术网

Sql server INSERT INTO SELECT给定值:提供的值的列名或数目与表定义不匹配

Sql server INSERT INTO SELECT给定值:提供的值的列名或数目与表定义不匹配,sql-server,common-table-expression,insert-into,Sql Server,Common Table Expression,Insert Into,我在执行下面的代码时收到此错误消息 提供的值的列名或数目与表定义不匹配 --DROP TABLE #UniqueBuildingUsageFkAndBuildingFk CREATE TABLE #UniqueUsageFkAndBuildingFk ( Building_fk INT NOT NULL ,Usage_fk INT NOT NULL DEFAULT(0) ); ;WITH

我在执行下面的代码时收到此错误消息

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

       --DROP TABLE #UniqueBuildingUsageFkAndBuildingFk
         CREATE TABLE #UniqueUsageFkAndBuildingFk (
         Building_fk INT NOT NULL 
         ,Usage_fk INT NOT NULL DEFAULT(0)
         );

         ;WITH UnknownUsageFkAndBuildingFkCTE AS (
        SELECT DISTINCT mm.Building_fk, 0 AS Usage_fk FROM Customers.StandardizedRecord sr
        JOIN Customers.MidasMatch mm ON mm.CustomersBuildingNumberKey = sr.CustomersBuildingNumberKey
        WHERE sr.CustomersBuildingNumberKey NOT IN (SELECT DISTINCT emm.CustomersBuildingNumberKey FROM
        [Customers].[CustomersBuildingNumberKeyCustomersUsageXRef] ebu 
        JOIN [Customers].[MidasMatch] emm ON emm.CustomersBuildingNumberKey = ebu.CustomersBuildingNumberKey WHERE emm.Building_fk > 0)
        AND mm.Building_fk > 0 
        ) 
        INSERT INTO #UniqueUsageFkAndBuildingFk 
        SELECT Building_fk, Usage_fk
        FROM UnknownUsageFkAndBuildingFkCTE;
但是当我注释掉插入UniqueUsageFkAndBuildingFk行时,我返回的是所需的结果集

我迷路了

在表uniqueusagefk和buildingfk中,有3列Building\u fk、Usage\u fk、CustomersBuildingNumberKey。因此,当插入到该表中时,必须为这三列指定值

INSERT INTO #UniqueUsageFkAndBuildingFk 
SELECT Building_fk, Usage_fk, 0
FROM UnknownUsageFkAndBuildingFkCTE;
也可以在插入中指定列

INSERT INTO #UniqueUsageFkAndBuildingFk (Building_fk, Usage_fk)
SELECT Building_fk, Usage_fk
FROM UnknownUsageFkAndBuildingFkCTE;

正如Abdul在上面的回答,我意识到我错过了排队的那栋楼

INSERT INTO #UniqueUsageFkAndBuildingFk  

选择DISTINCT mm.Building_fk,0作为用法,0作为CustomerBuildingNumberKey FROM Customers-后续选择Building_fk,用法会有一个快速提示,CustomerBuildingNumber插入到表中的列数与插入到表中的列数不相等。请将insert语句中的列名称为insert into UNIQUEUSAGEFK和BUILdingFK Building_fk,USERATION_fk感谢您指出这一点。但这是一个打字错误。我的临时表实际上只有Building\u fk、Usage\u fk列。所以,这仍然是一个问题。我更新了问题中的代码以避免混淆Abdul,感谢您指出这一点。但这是一个打字错误。我的临时表实际上只有Building\u fk、Usage\u fk列。所以,这仍然是一个问题。