问题描述
我们可以在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中设计的,我有资格仅使用选择查询而不创建过程。