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

erwarte ich hinzufügen, um die Daten aus der #EmPcodes temporären Tabelle zu #pArrangeAllcode zu bekommen, aber es hat zusätzliche Spalt, die ich später nutzen würde ... I erhalten Sie immer diesen Fehler:Wie temporäre Tabelle auf einem andere temporäre Tabelle mit extra Spalte

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

Hilfe?

+0

Einfache Regel passieren: Immer alle Spalten Liste, wenn Sie 'insert' verwenden. –

+0

also muss ich die Werte in den CodeArrange in der Einfügung einfügen! –

+0

Das Problem, dass ich eine Update-Anweisung von den #EmpCodes haben, um sie in der neuen Temp-Tabelle #pArrangeAllcode –

Antwort

2

Eigentlich whch Sie vermissen eine Spalte in Insert-Anweisung auch einen gewissen Wert benötigen:

Verwendung dieses:

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

Verwenden Sie die folgende Abfrage zum Einfügen von Datensätzen.

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

Ich habe es dank :) –

1

CodeArrange ist die zusätzliche Spalte gibt es in der #pArrangeAllcode Tabelle. Da es sich um eine NOT NULL Spalte handelt, können Sie den bestimmten Spaltennamen im Einfügeblock überspringen und explizit den Spaltennamen als INSERT-Anweisung angeben.

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 

oder wenn Sie einige Dummy-Wert in der CodeArrange Spalte speichern wollen, dann 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 
Verwandte Themen