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列。所以,这仍然是一个问题。