tipos - modificar columna auto_increment sql server
MSSQL Seleccionar instrucción con columna de número entero incremental... no de una tabla (4)
Es feo y funciona mal, pero técnicamente esto funciona en cualquier tabla con al menos un campo único Y funciona en SQL 2000.
SELECT (SELECT COUNT(*) FROM myTable T1 WHERE T1.UniqueField<=T2.UniqueField) as RowNum, T2.OtherField
FROM myTable T2
ORDER By T2.UniqueField
Nota: Si usa este enfoque y agrega una cláusula WHERE al SELECT externo, debe agregarlo al SELECT interno también si desea que los números sean continuos.
Necesito, si es posible, una consulta t-sql que, al devolver los valores de una tabla arbitraria, también devuelve una columna entera incremental con value = 1 para la primera fila, 2 para la segunda, y así sucesivamente.
Esta columna no reside realmente en ninguna tabla, y debe ser estrictamente incremental, porque la cláusula ORDER BY podría ordenar las filas de la tabla y quiero que la fila incremental en forma perfecta siempre ...
Gracias por adelantado.
--EDIT Lo siento, se me olvidó mencionar, debe ejecutarse en SQL Server 2000
Para SQL 2005 y posteriores
SELECT ROW_NUMBER() OVER( ORDER BY SomeColumn ) AS ''rownumber'',*
FROM YourTable
para el 2000 necesitas hacer algo como esto
SELECT IDENTITY(INT, 1,1) AS Rank ,VALUE
INTO #Ranks FROM YourTable WHERE 1=0
INSERT INTO #Ranks
SELECT SomeColumn FROM YourTable
ORDER BY SomeColumn
SELECT * FROM #Ranks
Order By Ranks
vea también aquí Número de fila
Prueba ROW_NUMBER ()
http://msdn.microsoft.com/en-us/library/ms186734.aspx
Ejemplo:
SELECT
col1,
col2,
ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
Puede comenzar con un número personalizado e incrementar desde allí, por ejemplo, desea agregar un número de cheque para cada pago que puede hacer:
select @StartChequeNumber = 3446;
SELECT
((ROW_NUMBER() OVER(ORDER BY AnyColumn)) + @StartChequeNumber ) AS ''ChequeNumber''
,* FROM YourTable
dará el número de cheque correcto para cada fila.