创建一个在另一列中使用相似值分组的列

时间:2018-10-01 10:57:17

标签: sql tsql

我是SQL / T-SQL的新手,如果有人可以帮助我解决这个问题,那就太好了。

所以我有一个列RID:

RID 
111
111
111
222
222
222
333
333
333

现在我必须使用带有BY GROUP或BY_PARTITION的t-sql ROW_NUMBER来获得以下结果:

RID  |  No
111 |  1
111 |  1
111 |  1
222 |  2
222 |  2
222 |  2
333 |  3
333 |  3
333 |  3

非常感谢。祝你有美好的一天:D

3 个答案:

答案 0 :(得分:3)

DENSE_RANK函数可让您根据RID中的值对每一行进行排名。 参见下面的模型:

DECLARE @TestTable table (RID INT)
INSERT INTO @TestTable
SELECT 111 UNION ALL
SELECT 111 UNION ALL
SELECT 111 UNION ALL
SELECT 222 UNION ALL
SELECT 222 UNION ALL
SELECT 222 UNION ALL
SELECT 333 UNION ALL
SELECT 333 UNION ALL
SELECT 333 UNION ALL
SELECT 333 



SELECT 
    RID, 
    [No]=DENSE_RANK() over (order by RID) 
FROM
    @TestTable

答案 1 :(得分:1)

您可以使用dense_rank()

select rid, dense_rank() over (order by rid) as num
from t;

答案 2 :(得分:1)

您已经习惯了密集排名

select * ,dense_rank over (order by rid ) as No from t