--测试数据
if not object_id(N'tempdb..#T') is null
drop table #T
Go
Create table #T([ID] int,name nvarchar(50),Mes nvarchar(200))
Insert #T
select 1,N'张三',N'描述1' union all
select 2,N'张三',N'描述1' union all
select 3,N'张三',N'描述1' union all
select 4,N'李四',N'描述2' union all
select 5,N'李四',N'描述2' union all
select 6,N'王老六',N'描述3'
Go
--测试数据结束
SELECT *,ROW_Number()OVER(ORDER BY name) ROW_Number FROM #T
SELECT *,DENSE_RANK()OVER(ORDER BY name) DENSE_RANK FROM #T
SELECT *,RANK()OVER(ORDER BY name) RANK FROM #T
一:ROW_Number
记录行号,可用于分页等情况
4 | 李四 | 描述2 | 1 |
5 | 李四 | 描述2 | 2 |
6 | 王老六 | 描述3 | 3 |
1 | 张三 | 描述1 | 4 |
2 | 张三 | 描述1 | 5 |
3 | 张三 | 描述1 | 6 |
二:DENSE_RANK
dense_rank函数出现相同排序时、排序号一致;dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续
4 | 李四 | 描述2 | 1 |
5 | 李四 | 描述2 | 1 |
6 | 王老六 | 描述3 | 2 |
1 | 张三 | 描述1 | 3 |
2 | 张三 | 描述1 | 3 |
3 | 张三 | 描述1 | 3 |
二:RANK
rank函数出现相同排序时,排序号一致,rank函数生成的序号有可能不连续
4 | 李四 | 描述2 | 1 |
5 | 李四 | 描述2 | 1 |
6 | 王老六 | 描述3 | 3 |
1 | 张三 | 描述1 | 4 |
2 | 张三 | 描述1 | 4 |
3 | 张三 | 描述1 | 4 |