получить оценку с предыдущего ранга, принадлежащего другому студенту - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь получить оценку из предыдущего ранга, принадлежащего другому ученику, для каждой строки в следующем утверждении выбора. Теперь я хотел бы иметь оценку предыдущего ранга в каждом коде группы для каждого кода курса и кода студента.

SELECT StudentCode, CourseCode,GroupCode, Score, StudentRank
FROM Table

мои данные таблицы

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вы можете использовать apply:

SELECT StudentCode, CourseCode,GroupCode, Score, StudentRank, t1.What_u_want
FROM Table t OUTER APPLY 
     ( SELECT TOP 1 t1.Score AS What_u_want
       FROM Table t1
       WHERE t1.CourseCode = t.CourseCode AND 
             t1.GroupCode = t.GroupCode AND
             t1.StudentRank < t.StudentRank
             ORDER BY t1.StudentRank DESC
     );

Однако, то же самое можно было бы достичь с помощью корреляции подхода:

SELECT StudentCode, CourseCode,GroupCode, Score, StudentRank, 
      (SELECT TOP 1 t1.Score AS What_u_want
       FROM Table t1
       WHERE t1.CourseCode = t.CourseCode AND 
             t1.GroupCode = t.GroupCode AND
             t1.StudentRank < t.StudentRank
             ORDER BY t1.StudentRank DESC
      ) What_u_want
FROM Table t1;
0 голосов
/ 29 июня 2018

Вы можете использовать команду LAG для получения предыдущего значения

SELECT LAG(StudentCode) prev_StudentCode,
       StudentCode,
       LAG(CourseCode) prev_CourseCode,
       CourseCode,
       LAG(GroupCode) prev_GroupCode,
       GroupCode,
       LAG(Score) prev_Score,
       Score,
       LAG(StudentRank) prev_StudentRank,
       StudentRank
FROM [Table];
...