在SQL Server中生成递增数字的函数

Rei*_*ica 2 t-sql sql-server

有没有办法从函数中选择并让它返回递增的数字?

例如,执行以下操作:

SELECT SomeColumn, IncrementingNumbersFunction() FROM SomeTable
Run Code Online (Sandbox Code Playgroud)

让它回归:

SomeColumn | IncrementingNumbers
--------------------------------
some text  | 0
something  | 1
foo        | 2
Run Code Online (Sandbox Code Playgroud)

SQL*_*ace 11

在SQL Server 2005及更高版本上,您可以使用ROW_NUMBER()

SELECT SomeColumn, 
     ROW_NUMBER() OVER(Order by SomeColumn) as IncrementingNumbers
 FROM SomeTable
Run Code Online (Sandbox Code Playgroud)

在SQL Server 2000中,您可以使用标识,但如果删除了,则会有间隙

SQL 2000代码,以防你的常规表中有一个带有标识列的空白,在带有标识的temp中插入,然后从中选择

SELECT SomeColumn, 
     IDENTITY( INT,1,1) AS IncrementingNumbers
     INTO #temp
 FROM SomeTable
 ORDER BY SomeColumn


 SELECT * FROM #temp
 ORDER BY IncrementingNumbers
Run Code Online (Sandbox Code Playgroud)