使用多个相同值枚举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