使用学期制的学术术语将一年分为两年。
我从SQL查询得到以下结果,如上所述,该术语的值从1到2始终保持该特定术语的学生分数(ID):
ID | Year | Term | Career | Score
-----------------------------------
1 | 2015 | 2 | 70 | 3,25
1 | 2015 | 1 | 70 | 3,58
2 | 2015 | 1 | 71 | 4,05
2 | 2014 | 2 | 71 | 4,17
3 | 2012 | 2 | 70 | 3,88
3 | 2012 | 1 | 70 | 4,23
3 | 2011 | 2 | 70 | 4,78
我想为每个学生返回最后一个学期(年学期)的相应行,所以结果如下:
ID | Year | Term | Career | Score
-----------------------------------
1 | 2015 | 2 | 70 | 3,25
2 | 2015 | 1 | 71 | 4,05
3 | 2012 | 2 | 70 | 3,88
我正在利用具有以下特殊性的GROUP BY子句:
问题在于我需要将该术语保留到相应的年份,MAX(Term)子句是导致错误的子句。例如,使用我现在获得的查询,结果不正确,因为它将返回此行:
ID | Year | Term | Career | Score
-----------------------------------
2 | 2015 | 2 | 71 | 4,05
而不是这一个(这是正确的):
ID | Year | Term | Career | Score
-----------------------------------
2 | 2015 | 1 | 71 | 4,05
如何保持(年度)之间的对应关系?
提示:2015-2大于2015-1,2014-1大于2013-2。
答案 0 :(得分:1)
维护更新日期列。使用此列,您可以实现任何目标。
答案 1 :(得分:0)
不幸的是,Informix不提供row_number()
。
以下是否有效?
select t.*
from t
where year || term = (select max(t2.year || t2.term)
from t t2
where t2.id = t.id
);