2012-01-19 12 views

Respuesta

13

Suponiendo que está usando SQL 2005 o posterior:

SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY GETDATE()) AS d 

para ordenar las filas tal como se devuelven desde la base de datos. Si desea especificar una orden, puede hacerlo a:

SELECT dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER(ORDER BY dbo.a) AS d 

Para SQL 2000 y anteriores se necesita un valor único para ordenar por:

SELECT dbo.a, dbo.b, dbo.c, (SELECT COUNT(*) FROM dbo d2 WHERE d2.a <= dbo.a) AS d 
FROM dbo 

o si no es necesario un solo SELECT :

SELECT IDENTITY(int,1,1) ID, dbo.a, dbo.b, dbo.c 
INTO #Temp 
FROM dbo 

SELECT * FROM #Temp 
+0

I hav e SQL2000. ¿Cualquier otra manera? – tdjfdjdj

1

Creo que se puede llevarlo a cabo con algo como:

select dbo.a, dbo.b, dbo.c, ROW_NUMBER() OVER (order by dbo.a) as d from somewhere; 

Mi respuesta asumió SQL Server 2005 +, creo D Stanley respuesta le ayudará en 2000.

+1

'ROW_NUMBER()' era nuevo para SQL Server 2005, OP está utilizando SQL Server 2000 –

Cuestiones relacionadas