ROW_NUMBER() OVER ([ <partition_by_clause> ] <order_by_clause>)
最近发现这个函数非常好用,用途较多,可以解决一些棘手的问题,既可满足分区的需求,也可以根据一定的顺序来排序。
例如:品目价格排序,多门学科顺序打乱的成绩排名等等。
ROW_NUMBER( ) 起到了编号的功能
partition by 将相同数据进行分区
order by 使得数据按一定顺序排序
如下是个简单的给相同名字排序的实例:
xm |
张三 |
张三 |
张三 |
张三 |
李四 |
李四 |
王五 |
王五 |
王五 |
王五 |
王五 |
王五 |
通过对内容一样的字段进行分区排序
select ROW_NUMBER() over(partition by xm Order by xm ASC) As no,xm from 表
效果如下:
no | xm |
1 | 张三 |
2 | 张三 |
3 | 张三 |
4 | 张三 |
1 | 李四 |
2 | 李四 |
1 | 王五 |
2 | 王五 |
3 | 王五 |
4 | 王五 |
5 | 王五 |
6 | 王五 |