ROW_NUMBER() OVER
时间: 2023-09-04 07:10:02 浏览: 91
在 SQL Server 中,ROW_NUMBER() OVER 是一种窗口函数,用于对查询结果集中的每一行进行编号。它的一般形式如下:
```
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
```
其中,PARTITION BY 子句是可选的,用于指定分区表达式,对查询结果进行分区;ORDER BY 子句是必需的,用于指定排序表达式和排序方式。
ROW_NUMBER() OVER 函数根据 ORDER BY 子句中指定的排序表达式,为每个分区中的行分配一个唯一编号。例如,下面的查询使用 ROW_NUMBER() OVER 函数为销售订单按照销售员 ID 进行分区,并按照总销售额降序排序:
```
SELECT SalesPersonID, TotalSales,
ROW_NUMBER() OVER (PARTITION BY SalesPersonID ORDER BY TotalSales DESC) AS RowNum
FROM (
SELECT SalesPersonID, SUM(TotalDue) as TotalSales
FROM Sales.SalesOrderHeader
GROUP BY SalesPersonID
) as SalesSummary
```
上述查询会返回一个包含三个列的结果集:SalesPersonID,TotalSales 和 RowNum。其中 RowNum 是根据每个 SalesPersonID 分区内的 TotalSales 排序后的行号。
阅读全文