Я хочу перечислить строки так, чтобы неуникальные значения получали одинаковое число и не увеличивались. Поэтому мои данные должны выглядеть так:
id - term_seq_id - rn
---------------------
1 0944 1
1 0944 1
1 0962 2
2 1024 1
2 1054 2
Я искал это решение:
SQL: перечислить возвращенные строки в каждой группе
Что работает, если все значения уникальны в операторе 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
увеличивается". Я пробовал разбивать на несколько строк, но ничего не получалось.