Повторная нумерация дочерних записей на родительскую запись - PullRequest
0 голосов
/ 03 июня 2019

У меня есть родительская и дочерняя таблица, подобная следующей:

 Parent Table

 CourseId  |  CourseName
 1         |  MVC training

и

Child Table

Id  | StudentId  | CourseId  | AttnDate 
1   | 33         | 1         | 6/1/2019
2   | 33         | 1         | 6/2/2019
3   | 33         | 1         | 6/3/2019
4   | 34         | 1         | 6/1/2019
5   | 34         | 1         | 6/2/2019
6   | 34         | 1         | 6/3/2019

Я искал в Google, чтобы использовать rownumber, чтобы сделать это, но не смог сделать это.

Понятия не имею

Я хочу получить конечный результат, как в следующей таблице.Мне нужно изменить 33 на 1 и 34 на 2:

Id  | StudentId  | CourseId  | AttnDate 
1   | 1         | 1         | 6/1/2019
2   | 1         | 1         | 6/2/2019
3   | 1         | 1         | 6/3/2019
4   | 2         | 1         | 6/1/2019
5   | 2         | 1         | 6/2/2019
6   | 2         | 1         | 6/3/2019

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Попробуйте это с помощью DENSE_RANK ()

    SELECT Id, 
         DENSE_RANK()OVER( ORDER BY StudentId) AS StudentId,
         CourseId,
         AttnDate
    FROM Parent p 
    INNER JOIN Child c  ON c.CourseId = p.CourseId
    ORDER bY  p.ID
0 голосов
/ 03 июня 2019

Зачем вам нужно «поменять 33 на 1 и 34 на 2»?Это делается для того, чтобы назначить уникальный номер ранга для каждой отдельной строки в разделе (данные сгруппированы по StudentId)?Если это так, то функция ранжирования SQL Server DENSE_RANK - это то, что вам нужно

SELECT *, 
DENSE_RANK() OVER(ORDER BY c.StudentId) AS RowNumberRank -- here is your rank number (StudentId in your final result)
FROM  Child c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...