`ROW_NUMBER OVER` 是 SQL 中的一个窗口函数,用于为结果集中的每一行生成一个新的数值。这个函数通常与 `ORDER BY` 子句一起使用,以确定生成数值的顺序。
`ROW_NUMBER` 函数的基本语法如下:
ROW_NUMBER OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ... )
* `PARTITION BY` 是可选的,它将结果集分成不同的段,或称为“分区”。`ROW_NUMBER` 会在每个分区内重新开始计数。
* `ORDER BY` 定义了在每个分区内部生成 `ROW_NUMBER` 的顺序。
举个例子,假设我们有一个员工表,表的结构如下:
CREATE TABLE Employees ( ID INT, Name VARCHAR(100), Department VARCHAR(100) );
如果我们想为每个部门的员工按照名称排序并赋予一个行号,可以使用如下查询:
SELECT ID, Name, Department, ROW_NUMBER OVER ( PARTITION BY Department ORDER BY Name ASC ) as 'RowNumber' FROM Employees;
在这个查询中,`ROW_NUMBER` 函数会首先按照部门(Department)进行分区,然后在每个部门内按照员工名称(Name)进行排序,并生成行号。因此,每个部门的员工都将从 1 开始编号,并且名称靠前的员工将获得较小的行号。
www.tstingmi.com 提供内容。