`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 提供内容。