从我的结果中获取行号

Getting row number from my results

今晚我的大脑不工作了!

数据

Id int, Name varchar, Tag varchar, MilesAway decimal(9,6)

我正在尝试将 row_number 添加到我的结果集中,但我想忽略由标记引起的重复行。这是预期的输出:

所以,我应该得到结果编号 1、2、3、4。这是我编写查询的方式:

select  Id,
        Name,
        Tag,
        MilesAway,
        row_number() over (order by MilesAway)
from    table t
group by Id,
        Name,
        Tag,
        MilesAway

我也试过将 partition by 添加到除标记之外的所有列。我知道这一点,我已经写了数百篇,为什么我感到困惑(除了午夜!)?

编辑:我想忽略 1 号地点有 2 条记录的事实,并且仍然希望下一条是 2,而不是 3。

您正在寻找dense_rank

select Id,
    name,
    Tag,
    MilesAway,
    dense_rank() over (
        order by MilesAway
        )
from table t;

select Id,name,Tag,MilesAway, dense_rank() 在 ( 通过 MilesAway 订购 ) 来自 table ;

试一试

select Id, name,Tag, MilesAway, dense_rank() over ( order by MilesAway)
from table t
group by Id, Name,Tag, MilesAway