INSERT von Tabelle 2 in Tabelle 1

So hätte ich mir das erklären können, ja.


Code:
DECLARE
    @KEY AS INT
 
SELECT @KEY = MAX(CS_KEY) FROM dbo.CUSTOMER
 
 
--INSERT INTO dbo.CUSTOMER SELECT CS_CODE, CS_NAME, CS_KEY FROM dbo.CUSTOMER EXCEPT
 
SELECT CST_No, CST_Name, @KEY+ROW_NUMBER() OVER (ORDER BY CST_Name) FROM dbo.daten_nav
 
WHERE CST_NO LIKE '1%' AND CST_Name <> ' ';

Jedoch finde ich, passt es soweit.

edit: Eine Ausgabe des ganzen ohne Insert-Befehl schaut auch wunderbar aus.
 
Werbung:
Aber du insertest blind in die Tabelle Customer, hat die vieleicht mehr oder weniger Spalten als dein Select (3 Spalten) oder sind die in einer anderen Reihenfolge?
 
Du gibst gar nichts an, nur die Tabelle und schmeist irgendwas hinein. Wenn die Tabelle eine andere Reihenfolge hat als die Spalten in deinem Select krachts.

INSERT INTO dbo.CUSTOMER(CS_CODE,CS_NAME,CS_KEY) SELECT CS_CODE, CS_NAME, CS_KEY FROM dbo.CUSTOMER EXCEPT...
 
Werbung:
Du gibst gar nichts an, nur die Tabelle und schmeist irgendwas hinein. Wenn die Tabelle eine andere Reihenfolge hat als die Spalten in deinem Select krachts.

INSERT INTO dbo.CUSTOMER(CS_CODE,CS_NAME,CS_KEY) SELECT CS_CODE, CS_NAME, CS_KEY FROM dbo.CUSTOMER EXCEPT...

Um das mal zu demonstrieren:

Code:
i24test=*# create table quelle (id int, name text);
CREATE TABLE
Time: 7,485 ms
i24test=*# insert into quelle values (1, 'andreas');
INSERT 0 1
Time: 0,292 ms
i24test=*# create table ziel (name text, id int);
CREATE TABLE
Time: 8,136 ms
i24test=*# insert into ziel select id, name from quelle;
ERROR:  column "id" is of type integer but expression is of type text
LINE 1: insert into ziel select id, name from quelle;
                                    ^
HINT:  You will need to rewrite or cast the expression.
Time: 0,236 ms
i24test=*# insert into ziel (id, name) select id, name from quelle;
INSERT 0 1
Time: 0,417 ms

Geht doch nicht über eine kurze Demo, oder?


Andreas
 
Zurück
Oben