【发布时间】:2019-01-16 10:56:39
【问题描述】:
我想枚举行,以使非唯一值获得相同的数字并且不增加。所以我的数据应该是这样的:
id - term_seq_id - rn
---------------------
1 0944 1
1 0944 1
1 0962 2
2 1024 1
2 1054 2
我正在研究这个解决方案:
SQL: enumerate returned rows within each group
如果值在窗口函数的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_seq_id 增加时才增加”。我尝试按多行进行分区,但没有做任何事情。
【问题讨论】:
标签: sql sql-server tsql sql-server-2017