ROW_NUMBER()用于包含更多行的行

时间:2014-07-23 11:13:22

标签: sql sql-server

我有这张桌子

ObjectId|  Value
---------------------
    1   |   A
    1   |   A
    1   |   A
    5   |   B
    5   |   B
    5   |   B

按值排序并尝试获取"行号"这种方式(一行由多行组成):

RowNumber  |   ObjectId  |   Value
------------------------------------
    1      |      1      |     A
    1      |      1      |     A
    1      |      1      |     A
    2      |      5      |     B
    2      |      5      |     B
    2      |      5      |     B

有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您正在寻找dense_rank

select dense_rank() over (order by Value), ObjectId, Value
from thistable;

您可以包含以下两列:

select dense_rank() over (order by ObjectId, Value), ObjectId, Value
from thistable;

答案 1 :(得分:0)

查看dense_rank(),这将按顺序继续下一个数字。有example here

SQL Fiddle

  

返回结果集分区内的行级别,而不是   排名中的任何差距。行的等级是一加上的数量   排在相关行之前的不同排名。