SQL Server 2005 ROW_NUMBER() ohne ORDER BY

Ich versuche, einfügen von einer Tabelle in eine andere mit

DECLARE @IDOffset int;
SELECT @IDOffset = MAX(ISNULL(ID,0)) FROM TargetTable

INSERT INTO TargetTable(ID, FIELD)
SELECT [Increment] + @IDOffset ,FeildValue
FROM SourceTable
WHERE [somecondition]

TargetTable.ID ist keine identity-Spalte, das ist, warum ich zu finden ein Weg, um auto-increment-es selbst.

Ich weiß, ich kann einen cursor oder eine Tabelle erstellen variable, die mit einer identity-Spalte und eine FieldValue Feld, füllen Sie es, dann benutzen Sie es in mein insert into...selectaber das ist nicht sehr effizient. Ich habe versucht mit der ROW_NUMBER-Funktion erhöht, aber ich habe nicht wirklich einen legitimen ORDER BY-Feld in der SourceTable, die ich nutzen kann und möchte, um die original-Reihenfolge der SourceTable (wenn möglich).

Kann jemand etwas empfehlen?

InformationsquelleAutor der Frage Fragilerus | 2011-01-26

Schreibe einen Kommentar