2016-05-10 56 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