SQL:从另一个表(GROUP BY?)获取每一行的最后(最高)记录

abr*_*pin 1 sql-server select join group-by

以下是我的表的以下记录:(我目前正在使用SQL Server 2008)

YearLevels

YearLevelID     YearLevelName
1               Freshman       
2               Sophomore       
3               Junior       
4               Senior   
Run Code Online (Sandbox Code Playgroud)

学生们

StudentID     FirstName     LastName
1             John          Doe
2             Peter         Pan
3             Mark          Twain
Run Code Online (Sandbox Code Playgroud)

LevelsAttained

SSID     StudentID  YearLevelID
1        1          2
2        1          1
3        1          3
4        2          2
5        3          1
6        2          1
Run Code Online (Sandbox Code Playgroud)

输出应该是:

FullName     YearLevelName
John Doe     Junior
Peter Pan    Sophomore
Mark Twain   Freshman
Run Code Online (Sandbox Code Playgroud)

Lit*_*les 5

SELECT FirstName + ' ' + LastName AS FullName, YearLevelName
FROM Students S
INNER JOIN (
    SELECT StudentID, MAX(YearLevelID) AS MaxLevel
    FROM LevelsAttained
    GROUP BY StudentID
) MaxLevels ON MaxLevels.StudentID = S.StudentID
INNER JOIN YearLevels Y ON Y.YearLevelID = MaxLevels.MaxLevel
Run Code Online (Sandbox Code Playgroud)

  • 注意(对于@eibhrum)字符串的`+`是非标准语法,只适用于SQL Server.标准SQL使用`||`代替. (4认同)