Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (P-Z)

 

ROW_NUMBER 函数 [Miscellaneous]

为每一行指派一个唯一的编号。使用此函数替代 NUMBER 函数。

语法
ROW_NUMBER( ) OVER ( window-spec )
window-spec:请参见下面的“注释”部分
返回值

INTEGER

注释

可以在函数语法中指定 window-spec 的元素(内置),也可以将这些元素与 SELECT 语句中的 WINDOW 子句一并加以指定。作为窗口函数使用时,必须指定 ORDER BY 子句,还可以指定 PARTITION BY 子句,但不能指定 ROWS 或 RANGE 子句。请参见WINDOW 子句中提供的 window-spec 定义。

有关在 SELECT 语句中使用窗口函数的详细信息(包括工作示例),请参见窗口函数

另请参见
标准和兼容性
  • SQL/2003   SQL/OLAP 特性 T612。

示例

以下示例返回一个结果集,它提供 New York 和 Utah 州每个雇员的唯一行号。由于该查询按 Salary 降序排序,因此第一个行号将指派给数据集中薪水最高的雇员。尽管有两个雇员的薪水完全相同,但不会解决这种并列情况,因为给这两个雇员指派了唯一的行号。

SELECT Surname, Salary, State,
ROW_NUMBER() OVER (ORDER BY Salary DESC) "Rank"
FROM Employees WHERE State IN ('NY','UT');
Surname Salary State Rank
Shishov 72995.000 UT 1
Wang 68400.000 UT 2
Cobb 62000.000 UT 3
Morris 61300.000 UT 4
Davidson 57090.000 NY 5
Martel 55700.000 NY 6
Blaikie 54900.000 NY 7
Diaz 54900.000 NY 8
Driscoll 48023.690 UT 9
Hildebrand 45829.000 UT 10
... ... ... ...
Lynch 24903.000 UT 19