2016-05-10 59 views
0
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临时表中的数据得到#pArrangeAllcode 但它有,我会在以后使用额外的列...我总是得到这个错误:如何临时表添加到另一个临时表与额外的列

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

任何帮助?

+0

规则很简单:当你正在使用'insert'总是列出所有列。 –

+0

所以我必须在插入中的CodeArrange中插入值! –

+0

我有#EmpCodes中的更新语句将它们添加到新临时表中的问题#pArrangeAllcode –

回答

2

其实你缺少在INSERT语句中的一列也界河需要一定的价值:

使用本:

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

使用以下查询插入记录。

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

我做到了,谢谢:) –

1

CodeArrange是额外的列存在于#pArrangeAllcode表。由于它是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 
0
INSERT INTO #pArrangeAllcode 
SELECT dbo.#EmpPcodes.*, NULL 
FROM dbo.#EmpPcodes