22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT kr.SjID AS '试卷ID' ,
kr.Dlm AS '登录名' ,
MAX(km.Kscj) AS '最大成绩'
FROM exam1.dbo.Ksj_Ren kr --考试人员表
LEFT JOIN exam1.dbo.Kaoshi_Master AS km ON km.Dlm = kr.Dlm --考试记录表
WHERE km.Dlm = '00697'
GROUP BY kr.SjID ,
kr.Dlm
;WITH CTE
AS
(
SELECT kr.SjID AS '试卷ID' ,
kr.Dlm AS '登录名' ,
km.Kscj AS '最大成绩',
RANK()OVER(PARTITION BY kr.Dlm ORDER BY km.Kscj DESC) AS RN
FROM exam1.dbo.Ksj_Ren kr --考试人员表
LEFT JOIN exam1.dbo.Kaoshi_Master AS km ON km.Dlm = kr.Dlm --考试记录表
WHERE km.Dlm = '00697'
)
SELECT * FROM CTE WHERE RN=1
WITH t1
AS ( -- 最基本的分组依据
SELECT DISTINCT
Dlm ,
SjID
FROM exam1.dbo.Kaoshi_Master
),
t2
AS ( SELECT x.*
FROM t1
CROSS APPLY ( -- 每个分组取最大一条
SELECT TOP 1
*
FROM exam1.dbo.Kaoshi_Master a
WHERE a.Dlm = t1.Dlm
AND a.SjID = t1.SjID
ORDER BY Kscj DESC
) x
)
SELECT kr.Dlm '登录账号' ,
km.SjID '试卷ID' ,
km.Kscj '最高成绩'
FROM exam1.dbo.Ksj_Ren kr
LEFT JOIN t2 km ON kr.Dlm = km.Dlm
AND km.SjID = kr.SjID
WHERE kr.Dlm = '00697'
ORDER BY km.Dlm