如何在使用连接sql时从列获取最大值

Kha*_*din 1 sql sql-server join group-by

我写了以下sql查询

SELECT  ST.Roll, CR.Code, CR.Title, CR.Credits, SCH.ObtainedGPA
FROM [MIU_UCAM.1.0.1].[dbo].[StudentCourseHistory]  AS SCH
JOIN [MIU_UCAM.1.0.1].[dbo].[Student] AS ST ON SCH.StudentID = ST.StudentID
JOIN [MIU_UCAM.1.0.1].[dbo].[Course] AS CR ON SCH.CourseID = CR.CourseID AND SCH.VersionID = CR.VersionID

WHERE ST.Roll ='0914BPM00387'
Run Code Online (Sandbox Code Playgroud)

它返回结果如下

Roll            Code    Title                          Credits  ObtainedGPA  

0914BPM00387    BPM216  Physiology Lab -                   1    4.00         
0914BPM00387    BPM217  Pharmaceutical Microbiology        3    2.25         
0914BPM00387    BPM217  Pharmaceutical Microbiology        3    2.00          
0914BPM00387    BPM218  Pharmaceutical Microbiology Lab    1    3.50         
Run Code Online (Sandbox Code Playgroud)

这里BPM217和BPM217是相同的,但它的ObtainedGrade是不同的2.25和2.00.现在我怎样才能从这两行中获得最大值2.25.

我需要sql查询.谢谢先进.

Lin*_*ger 6

SELECT  ST.Roll, CR.Code, CR.Title, CR.Credits, MAX(SCH.ObtainedGPA)
FROM [MIU_UCAM.1.0.1].[dbo].[StudentCourseHistory]  AS SCH
JOIN [MIU_UCAM.1.0.1].[dbo].[Student] AS ST ON SCH.StudentID = ST.StudentID
JOIN [MIU_UCAM.1.0.1].[dbo].[Course] AS CR ON SCH.CourseID = CR.CourseID AND SCH.VersionID = CR.VersionID
WHERE ST.Roll ='0914BPM00387'
GROUP BY ST.Roll, CR.Code, CR.Title, CR.Credits  
Run Code Online (Sandbox Code Playgroud)