首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用组选择最新行的SQL

使用组选择最新行的SQL
EN

Stack Overflow用户
提问于 2016-10-19 18:30:06
回答 2查看 716关注 0票数 2

采用学期制将一年分成两部分的学术学期。

我从SQL查询中得到以下结果,如上面所述,该术语的值从1到2-它总是保存该特定术语的学生(ID)的分数:

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

我希望为每个学生返回最近一个学期(年度学期)的相应行,结果如下:

代码语言:javascript
复制
 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条款,有以下几个特点:

  • 按“ID”分组
  • 选择最大值(年份)
  • 选择最大值(项)

问题是,我需要将这个期限保持在相应的年份,而最大(术语)子句是导致错误的那个。例如,使用我现在获得的查询,结果是不正确的,因为它将返回此行:

代码语言:javascript
复制
 ID | Year | Term | Career | Score
-----------------------------------
 2  | 2015 |  2   |   71   | 4,05

而不是这个(这是正确的):

代码语言:javascript
复制
 ID | Year | Term | Career | Score
-----------------------------------
 2  | 2015 |  1   |   71   | 4,05

我如何保持(学期)之间的通信?

提示: 2015-2大于2015-1,2014-1大于2013-2。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-19 18:32:45

不幸的是,Informix不提供row_number()

下面的方法有效吗?

代码语言:javascript
复制
select t.*
from t
where year || term = (select max(t2.year || t2.term)
                      from t t2
                      where t2.id = t.id
                     );
票数 0
EN

Stack Overflow用户

发布于 2016-10-19 18:37:14

维护“更新日期”列。使用本专栏,您可以实现任何您想要的。

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

https://stackoverflow.com/questions/40139021

复制
相关文章

相似问题

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