如何将 temp table 添加到另一个带有额外列的 temp table

How to add temp table to another temp table with extra column

CREATE TABLE #EmpPcodes
(
   YearMonth        INT,
   YEAR             INT,
   MONTH            INT,
   RunNo            INT,
   Amount           NUMERIC(18, 3),
   GroupCode        NvarCHAR(30),
   GroupName        NvarCHAR(250),
   GroupAName       NvarCHAR(250),
   PayrollGroup     INT,
   EmployeeId       INT
)    
CREATE TABLE #pArrangeAllcode
(
   YearMonth        INT,
   YEAR             INT,
   MONTH            INT,
   RunNo            INT,
   Amount           NUMERIC(18, 3),
   GroupCode        NvarCHAR(30),
   GroupName        NvarCHAR(250),
   GroupAName       NvarCHAR(250),
   PayrollGroup     INT,
   EmployeeId       INT,
   CodeArrange      INT
)

INSERT INTO #pArrangeAllcode 
SELECT YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, 
GroupAName, PayrollGroup, EmployeeId,
FROM dbo.#EmpPcodes 

SELECT * FROM #pArrangeAllcode

我希望从#EmPcodes temp table 获取数据到#pArrangeAllcode 但它有额外的列,我稍后会用到它......我总是得到这个错误:

Insert Error: Column name or number of supplied values does not match table definition.

有帮助吗?

使用以下查询插入记录。

INSERT INTO #pArrangeAllcode 
SELECT YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, 
GroupAName, PayrollGroup, EmployeeId,NULL
FROM dbo.#EmpPcodes 

实际上您在插入语句中缺少一列,该列还需要一些值:

使用这个:

INSERT INTO #pArrangeAllcode 
SELECT YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, 
GroupAName, PayrollGroup, EmployeeId,NULL
FROM dbo.#EmpPcodes

CodeArrange#pArrangeAllcode table 中存在的额外列。由于它是 NOT NULL 列,您可以跳过插入块中的特定列名,并明确提及列名是 INSERT 语句。

INSERT INTO #pArrangeAllcode (YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, GroupAName, PayrollGroup, EmployeeId)
SELECT YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, GroupAName, PayrollGroup, EmployeeId
FROM #EmpPcodes 

或者如果您想在 CodeArrange 列中存储一些虚拟值,则传递 NULL

INSERT INTO #pArrangeAllcode (YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, GroupAName, PayrollGroup, EmployeeId, CodeArrange)
SELECT YearMonth, YEAR, MONTH, RunNo, Amount, GroupCode, GroupName, GroupAName, PayrollGroup, EmployeeId, NULL
FROM #EmpPcodes 
INSERT INTO #pArrangeAllcode 
SELECT dbo.#EmpPcodes.*, NULL
FROM dbo.#EmpPcodes