2012-01-19 3 views

Répondre

13

En supposant que vous utilisez SQL 2005 ou ultérieur:

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

pour ordonner les lignes telles qu'elles sont renvoyées à partir du DB. Si vous souhaitez spécifier un ordre dans lequel vous pouvez le faire:

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

Pour SQL 2000 et plus tôt vous avez besoin d'une valeur unique à l'ordre par:

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

ou si vous n'avez pas besoin d'un seul SELECT :

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

SELECT * FROM #Temp 
+0

J'ai hav e SQL2000. Un autre moyen? – tdjfdjdj

1

Je pense que vous pouvez le retirer avec quelque chose comme:

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

Ma réponse supposée SQL Server 2005+, je pense que la réponse D Stanley vous aidera en 2000.

+1

'ROW_NUMBER()' était nouveau pour SQL Server 2005, OP est d'utiliser SQL Server 2000 –