开窗函数row_number用法
时间: 2023-11-25 20:08:07 浏览: 106
ROW_NUMBER()是SQL Server中最基础的窗口函数之一,用于给查询结果集中的每一行生成一个唯一的序列号。
其语法如下:
```
ROW_NUMBER() OVER (ORDER BY column1, column2, ...)
```
其中,ORDER BY子句用于指定行号的生成顺序,可以按照一个或多个列进行排序,也可以不加排序。
例如,以下查询语句将按照销售额从高到低的顺序为每个产品生成一个行号:
```
SELECT ProductName, SalesAmount, ROW_NUMBER() OVER (ORDER BY SalesAmount DESC) AS RowNumber
FROM Sales
```
输出结果类似于:
```
ProductName | SalesAmount | RowNumber
------------+-------------+----------
Product A | 10000 | 1
Product B | 8000 | 2
Product C | 6000 | 3
Product D | 5000 | 4
```
可以看到,ROW_NUMBER()函数生成的行号是动态的,会根据ORDER BY子句指定的排序方式实时更新。因此,如果不需要排序,可以将ORDER BY子句省略。
ROW_NUMBER()函数还可以用于分页查询,例如,以下查询语句将返回第2页(每页10行)的销售记录:
```
SELECT *
FROM (
SELECT ProductName, SalesAmount, ROW_NUMBER() OVER (ORDER BY SalesAmount DESC) AS RowNumber
FROM Sales
) AS SalesWithRowNumber
WHERE RowNumber BETWEEN 11 AND 20
```
阅读全文