具有增量整数列的MSSQL Select语句...不是来自表

Rod*_*igo 34 sql sql-server sql-server-2000 row-number auto-increment

如果可能的话,我需要一个t-sql查询,它从任意表返回值,也返回一个增量整数列,第一行的值为1,第二行的值为2,依此类推.

这个列实际上并不存在于任何表中,并且必须是严格增量的,因为ORDER BY子句可以对表的行进行排序,并且我希望增量行始终处于完美形状...

提前致谢.

--EDIT抱歉,忘记提及,必须在SQL Server 2000上运行

SQL*_*ace 58

对于SQL 2005及更高版本

SELECT ROW_NUMBER() OVER( ORDER BY SomeColumn ) AS 'rownumber',*
    FROM YourTable
Run Code Online (Sandbox Code Playgroud)

对于2000你需要做这样的事情

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
Run Code Online (Sandbox Code Playgroud)

另见 行号

  • 不要忘记放下临时表 (4认同)

Isr*_*ies 7

您可以从自定义编号开始,然后从那里开始递增,例如,您想为您可以执行的每笔付款添加一个支票编号:

select @StartChequeNumber = 3446;
SELECT 
((ROW_NUMBER() OVER(ORDER BY AnyColumn)) + @StartChequeNumber ) AS 'ChequeNumber'
,* FROM YourTable
Run Code Online (Sandbox Code Playgroud)

将为每一行提供正确的支票号码。


Mis*_*sko 5

尝试 ROW_NUMBER()

http://msdn.microsoft.com/en-us/library/ms186734.aspx

例子:

SELECT
  col1,
  col2,
  ROW_NUMBER() OVER (ORDER BY col1) AS rownum
FROM tbl
Run Code Online (Sandbox Code Playgroud)