2012-01-19 2 views

risposta

13

Supponendo che si sta utilizzando SQL 2005 o successivo:

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

per ordinare le righe come vengono restituite dal DB. Se si desidera specificare un ordine si può fare così:

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

Per SQL 2000 e versioni precedenti è necessario un valore unico per ordinare da:

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

o se non avete bisogno di un singolo SELEZIONA :

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

SELECT * FROM #Temp 
+0

I hav e SQL2000. Ogni altro modo? – tdjfdjdj

1

penso che si può tirare fuori con qualcosa di simile:

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

La mia risposta assunto SQL Server 2005 +, penso D Stanley risposta vi aiuterà nel 2000.

+1

'ROW_NUMBER()' era nuovo per SQL Server 2005, OP sta usando SQL Server 2000 –