我知道标题听起来描述性不强,但这是我能想到的最好的:
我有这张桌子
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中设计的,我有资格仅使用选择查询而不创建过程。
我们可以在IN子句中使用乘法列:
select id, bdate, value from myview where (id, bdate) in (select id, max(bdate) from myview group by id) /