首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql-server-2008 :获取学生科目的最后状态

sql-server-2008 :获取学生科目的最后状态
EN

Stack Overflow用户
提问于 2015-09-02 11:54:02
回答 2查看 134关注 0票数 0

萨拉姆,(问候)所有人。

简介:我正在研究一个学生考试系统,学生们在那里出现,通过或者不及格或者缺席。

问题:,我的任务是获取他们的状态摘要。你可以说结果卡,应该打印他们的最后状态的一个主题。

下面是一个学生多次出现在不同时段的数据样本。我突出了一个学生三次出现的科目。

现在,我编写了以下查询,该查询提取与上面的图片相同的结果:

代码语言:javascript
复制
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.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-02 12:18:39

这将不起作用,因为您在组by和select中包含了gr.MARKS和gr.GRADE这样的字段,这意味着查询可能会为每个会话id返回一个以上的记录,而它们的分数或分数不同。

代码语言:javascript
复制
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 
票数 0
EN

Stack Overflow用户

发布于 2015-09-02 12:07:38

希望有一个日期字段,或指示学生在这堂课上出现的顺序的东西。使用它按降序顺序排列查询,以便最近的记录是第一条记录,然后是专门的“前1条”,然后只给出该学生的最新记录,该记录将包含在他最近的状态中。

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32352455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档