使用多个相同值枚举sql中的行

使用多个相同值枚举sql中的行,sql,sql-server,tsql,sql-server-2017,Sql,Sql Server,Tsql,Sql Server 2017,我希望枚举行,使非唯一值得到相同的数字,并且不会增加。因此,我的数据应该如下所示: id - term_seq_id - rn --------------------- 1 0944 1 1 0944 1 1 0962 2 2 1024 1 2 1054 2 我正在研究这个解决方案: 如果窗口函数中的ORDER BY语句中的值都是唯一的,则此选项有效。因此,我对此解决方案

我希望枚举行,使非唯一值得到相同的数字,并且不会增加。因此,我的数据应该如下所示:

id - term_seq_id - rn
---------------------
1    0944          1
1    0944          1
1    0962          2
2    1024          1
2    1054          2
我正在研究这个解决方案:

如果窗口函数中的ORDER BY语句中的值都是唯一的,则此选项有效。因此,我对此解决方案进行了以下查询,但它不起作用:

SELECT  student_id_fk
, Term_Seq_Id
, ROW_NUMBER() OVER (PARTITION BY student_id_fk ORDER BY Term_Seq_Id ) AS rn
FROM Courses AS c

ORDER BY student_id_fk, Term_Seq_Id
但是,这无法提供正确的输出。而是:

id - term_seq_id - rn
---------------------
1    0944          1
1    0944          2
1    0962          3
2    1024          1
2    1054          2
我不知所措,似乎没有任何方式可以说“只有当
term\u seq\u id
增加时才增加”。我尝试按多行划分,但没有任何效果。

使用
densed\u rank()

使用
densite\u rank()


你在找这个吗:

SELECT  student_id_fk
, Term_Seq_Id
, DENSE_RANK() OVER (PARTITION BY student_id_fk ORDER BY Term_Seq_Id ) AS rn
FROM Courses AS c

ORDER BY student_id_fk, Term_Seq_Id

你在找这个吗:

SELECT  student_id_fk
, Term_Seq_Id
, DENSE_RANK() OVER (PARTITION BY student_id_fk ORDER BY Term_Seq_Id ) AS rn
FROM Courses AS c

ORDER BY student_id_fk, Term_Seq_Id