微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查询中的多个最大值

如何解决查询中的多个最大值

我们可以在IN子句中使用乘法列:

select id, bdate, value 
from myview 
where (id, bdate) in
    (select id, max(bdate)
     from myview group by id)
/

解决方法

我知道标题听起来描述性不强,但这是我能想到的最好的:

我有这张桌子

ID BDATE VALUE
28911 2009年4月4日44820
28911 2009年4月17日32240
28911 20/4/2009 30550
28911 22/4/2009 4422587,5
28911 23/4/2009 4441659
28911 2009年4月24日7749594,67
38537 2009年4月17日58280
38537 2009年4月20日137240
38537 2009年4月22日81098692
38605 2009年4月14日2722368
38605 2009年4月20日5600
38605 22/4/2009 1625400
38605 23/4/2009 6936575

实际上,这是封装在视图中的非常复杂的查询,但现在已不再重要。

我想为每个ID包含最高BDate的行。在此示例中,这将是结果。

ID BDATE VALUE
28911 2009年4月24日7749594,67
38537 2009年4月22日81098692
38605 23/4/2009 6936575

我已经尝试过

select id,max(bdate),value from myview group by id,value

但随后它返回所有行,因为对于每个值,列均不同。该查询是在Oracle v10中设计的,我有资格仅使用选择查询而不创建过程。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。