Как выбрать значение столбца, который соответствует максимальному результату функции в запросе выбора - PullRequest
0 голосов
/ 14 мая 2019

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

images shows the table studentchaptertest. and shows the test attented by student.i want o/p max(testnumber)=3 and its status ;1 as o/p

SELECT @LastAttemptedTest=MAX([TestNumber] FROM [dbo].[StudentChapterwiseTest] WHERE 
    [ChapterId]=584 AND [StudentId]=212045 

SELECT Status FROM [dbo].[StudentChapterwiseTest] WHERE [TestNumber]=@LastAttemptedTest AND
    [ChapterId]=584 AND [StudentId]=212045                                          

я пытаюсь получить этоmax (номер теста) и статус соответствуют результату max (номер теста) в одном запросе на выборку

Ответы [ 2 ]

1 голос
/ 14 мая 2019

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

select t.*
from (select t.*, row_number() over (partition by studentid order by testnumber desc) as seq
      from table t
     ) t
where seq = 1;

РЕДАКТИРОВАТЬ: Если вы хотите одну строку, то используйте top (1) предложение:

select top (1) t.*
from table t
order by t.testnumber desc;
0 голосов
/ 14 мая 2019

Выберите максимальное количество тестов в подзапросе и JOIN на этом

SELECT t.status, t.testNumber
FROM StudentChapterwiseTest t
JOIN (SELECT StudentId, ChapterId, MAX(status) as max_stat 
      FROM StudentChapterwiseTest
      GROUP BY StudentId, ChapterId) mt ON t.status = mt.max_stat  AND t.chapterId = mt.chapterid AND t.studentId = mt.studentid
WHERE [ChapterId]=584 AND [StudentId]=212045 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...