Estoy tratando de insertar de una tabla a otra usandoSQL Server 2005 ROW_NUMBER() sin 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 no es una columna de identidad, por lo que tengo que encontrar una manera de auto -incrementarlo yo mismo.
Sé que puedo usar un cursor, o crear una variable de tabla con una columna de identidad y un campo FieldValue, poblar eso y luego usarlo en mi insert into...select
, pero eso no es muy eficiente. Intenté usar la función ROW_NUMBER para incrementar, pero realmente no tengo un campo ORDER BY legítimo en la SourceTable que pueda usar, y me gustaría mantener el orden original de la SourceTable (si es posible).
¿Alguien puede sugerir algo?
¿Cuál es el índice agrupado en la tabla de origen? Supongo que de eso es de lo que está hablando cuando dice "orden original de la tabla de origen". Si es un montón, no hay un orden en particular. –