ROW_NUMBER()
是SQL Server中的一個窗口函數,它在結果集中為每一行分配一個唯一的連續整數,根據指定的排序順序。這個函數在分析數據時非常有用,特別是當你需要知道數據在某個排序范圍內的位置時。
ROW_NUMBER()
函數的基本語法如下:
ROW_NUMBER() OVER (ORDER BY column1, column2, ...)
OVER
子句用于指定排序的列和順序。你可以指定一個或多個列來定義排序順序。OVER
子句中的列,那么ROW_NUMBER()
將使用查詢結果集內部的行號進行排序(從1開始)。下面是一個簡單的例子,演示了如何使用ROW_NUMBER()
函數:
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
DepartmentID INT,
Salary DECIMAL(10, 2)
);
INSERT INTO Employees (EmployeeID, FirstName, LastName, DepartmentID, Salary)
VALUES (1, N'John', N'Doe', 1, 50000.00),
(2, N'Jane', N'Smith', 2, 60000.00),
(3, N'Jim', N'Brown', 1, 55000.00),
(4, N'Jake', N'Johnson', 3, 70000.00);
SELECT
ROW_NUMBER() OVER (PARTITION BY DepartmentID ORDER BY Salary DESC) AS RowNum,
EmployeeID,
FirstName,
LastName,
DepartmentID,
Salary
FROM Employees;
在這個例子中,我們首先創建了一個名為Employees
的表,并插入了一些數據。然后,我們使用ROW_NUMBER()
函數為每個部門的員工分配一個行號,排序依據是薪水降序。PARTITION BY
子句用于將結果集劃分為多個分區,每個分區內的行號會重新從1開始計數。在這個例子中,我們按照DepartmentID
進行了分區。