8

ランク内の数値をスキップせずに、テーブル内の行をランク付けしたい。以下の例をご覧ください。

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<--

希望の順序が得られる限り、ランク関数を使用する必要はありません。

ありがとう!!

4

1 に答える 1

20

RANKの代わりにDENSE_RANKを使用してみてください

select *, DENSE_RANK() over (order by apples) as theRank from #test
于 2012-04-05T23:53:23.497 に答える