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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 查询和数据修改 » OLAP 支持 » SQL Anywhere 中的窗口函数 » 行编号函数

 

ROW_NUMBER 函数

ROW_NUMBER 函数唯一地编号其结果中的行。该函数不是秩函数;不过,可在任何可以使用秩函数的情况下使用它,且其行为类似于秩函数。

例如,可在派生表中使用 ROW_NUMBER,以便可以对 ROW_NUMBER 值进行其它限制(甚至可以是连接)。

SELECT *
FROM ( SELECT Description, Quantity,
       ROW_NUMBER( ) OVER ( ORDER BY ID ASC ) AS RowNum
FROM Products ) AS DT
WHERE RowNum <= 3
ORDER BY RowNum;

此查询会返回以下结果:

Description Quantity RowNum
Tank Top 28 1
V-neck 54 2
Crew Neck 75 3

与秩函数一样,ROW_NUMBER 需要使用 ORDER BY 子句。

当窗口的 ORDER BY 子句遇到非唯一表达式时,ROW_NUMBER 会返回非确定性结果;在并列情况下,行顺序是不可预知的。

ROW_NUMBER 用于处理整个分区;因此,不能使用 ROW_NUMBER 函数指定 ROWS 或 RANGE 子句。