使用SQL Server Rank函数对行进行排名而不跳过排名

时间:2012-04-05 23:49:19

标签: sql sql-server rank

我想在表中对行进行排名而不跳过排名中的数字。请看下面的例子。

CREATE TABLE #test(
apples int NOT NULL,
) ON [PRIMARY]
GO

insert into #test( apples ) values ( 10 )
insert into #test( apples ) values ( 10 )
insert into #test( apples ) values ( 20 )
insert into #test( apples ) values ( 30 )

select *, RANK() over (order by apples) as theRank from #test

drop table #test
go

结果是

apples   theRank
10       1
10       1
20       3
30       4

如何让排名不跳过数字2,以便结果看起来像

apples   theRank
10       1
10       1
20       2<--
30       3<--

我不必使用Rank函数,只要我得到所需的顺序。

谢谢!

1 个答案:

答案 0 :(得分:9)

尝试使用DENSE_RANK代替RANK

select *, DENSE_RANK() over (order by apples) as theRank from #test