具体语法:
ROW_NUM()OVER
(
[PARTITION BY partition`s expression(分区表述)]
ORDER BY order`s expression(各分区排序表述)[ASC|DESC]
) AS ROWNUM
ROW_NUMBER()可以实现将每个分区设置连续数字,(一大应用是显示行号)
语法说明:
(1)PARTITION BY 将数据进行分区,partition`s expression 是分区依据,注意:该语句不是必须的,没写时,函数则将所有数据是为一个分区内
(2)ORDER BY ,每个分区的元组排序的语句(ASC:升序,DESC:降序)
具体实例:
在结果集中使用SQL Server ROW_NUMBER()函数示例
(1)以下语句使用ROW_NUMBER()
为每个客户行分配一个序号:
代码段中没有说明分区依据,所以整个数据元组属于一个分区
以名字的首字母为排序依据,元组以首字母顺序排序
SELECT
ROW_NUMBER() OVER (
ORDER BY first_name
) row_num,
first_name,
last_name,
city
FROM sales.customers;
(2)使用PARTITION BY 语句实现客户按城市分区,在对每个分区城市中客户排序
SELECT
first_name,
last_name,
city,
ROW_NUMBER() OVER (
PARTITION BY city--分区标准为city,当city值变化,则重新计数
ORDER BY first_name
) row_num
FROM
sales.customers
ORDER BY city;--元组整体按city属性排序
当城市发生变化时,ROW-NUMBER()函数重新开始计数排序
文章仅为个人笔记,部分截图取自网络