Sto cercando di inserire da una tabella in un altro utilizzandoSQL Server 2005 ROW_NUMBER() senza ORDER BY
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 non è una colonna di identità, che è il motivo per cui devo trovare un modo per auto -incremento me stesso
So che posso usare un cursore, o creare una variabile di tabella con una colonna Identity e un campo FieldValue, popolarlo, quindi usarlo nel mio insert into...select
, ma non è molto efficiente. Ho provato a utilizzare la funzione ROW_NUMBER per incrementare, ma in realtà non ho un campo ORDER BY legittimo in SourceTable che posso utilizzare e vorrei mantenere l'ordine originale di SourceTable (se possibile).
Qualcuno può suggerire qualcosa?
Qual è l'indice cluster della tabella di origine? Suppongo che sia di questo che stai parlando quando dici "l'ordine originale della SourceTable"? Se è un mucchio non c'è un ordine particolare. –