萨拉姆,(问候)所有人。
简介:我正在研究一个学生考试系统,学生们在那里出现,通过或者不及格或者缺席。
问题:,我的任务是获取他们的状态摘要。你可以说结果卡,应该打印他们的最后状态的一个主题。
下面是一个学生多次出现在不同时段的数据样本。我突出了一个学生三次出现的科目。

现在,我编写了以下查询,该查询提取与上面的图片相同的结果:
SELECT DISTINCT
gr.STUDKEY,gr.SUBJECT_ID, gr.SUBJECT_DESC,gr.MARKS,
gr.PASSFAIL, gr.GRADE,max(gr.SESSION_ID), gr.LEVEL_ID
FROM RESULT gr
WHERE gr.STUDKEY = '0100106524'
GROUP BY gr.STUDKEY,gr.SUBJECT_ID, gr.SUBJECT_DESC,gr.MARKS,
gr.PASSFAIL, gr.GRADE, gr.LEVEL_ID理想:,我只想得到学生出现的某门学科的最后一种状态。
有人请求帮助。谢谢你的进阶。
问候
I使用的是sql-server-2008.
发布于 2015-09-02 12:18:39
这将不起作用,因为您在组by和select中包含了gr.MARKS和gr.GRADE这样的字段,这意味着查询可能会为每个会话id返回一个以上的记录,而它们的分数或分数不同。
SELECT
gr.STUDKEY,gr.SUBJECT_ID, gr.SUBJECT_DESC,
gr.PASSFAIL, gr.GRADE,gr.SESSION_ID, gr.LEVEL_ID
FROM RESULT gr
JOIN (SELECT MAX(SessionId) as sessionId, STUDKEY
FROM RESULT
GROUP BY STUDKEY ) gr1 ON gr1.sessionId=gr.sessionid AND gr1.STUDKEY =gr.STUDKEY 发布于 2015-09-02 12:07:38
希望有一个日期字段,或指示学生在这堂课上出现的顺序的东西。使用它按降序顺序排列查询,以便最近的记录是第一条记录,然后是专门的“前1条”,然后只给出该学生的最新记录,该记录将包含在他最近的状态中。
SELECT TOP 1
gr.STUDKEY,gr.SUBJECT_ID, gr.SUBJECT_DESC,gr.MARKS,
gr.PASSFAIL, gr.GRADE,gr.SESSION_ID, gr.LEVEL_ID
FROM RESULT gr
WHERE gr.STUDKEY = '0100106524'
ORDER BY gr.Date DESC //swap "Date" out for your field indicating the sequence.或者,如果您在同一时间寻找同一个学生的多个班级,则请在MAX(Date)中使用Group。
https://stackoverflow.com/questions/32352455
复制相似问题