Sql 从表中获取两个最大值

Sql 从表中获取两个最大值,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,为了达到预期的效果,我忙了一天。这是我的桌子 item loc price START_DATE CALC_DATE item1 1243 1,16 18.04.16 18.04.13 item1 1243 1,20 18.02.20 18.02.19 item1 1243 1,20 18.02.17 18.02.16 item1 1243 1,20 18.02.15 18.02.14 item1

为了达到预期的效果,我忙了一天。这是我的桌子

item    loc price   START_DATE  CALC_DATE
item1   1243    1,16    18.04.16    18.04.13
item1   1243    1,20    18.02.20    18.02.19
item1   1243    1,20    18.02.17    18.02.16
item1   1243    1,20    18.02.15    18.02.14
item1   1243    1,18    18.01.10    18.01.09
item2   1243    2,23    18.03.20    18.03.19
item2   1243    2,77    18.02.27    18.02.26
item2   1243    2,42    18.01.24    18.01.23
item2   1243    3,21    18.01.05    18.01.04
item2   1243    2,77    18.01.04    18.01.03
这就是欲望的输出

item    WH  actual price    old price
item1   1243    1,16    1,2
item2   1243    2,23    2,77
我可以通过执行max(STAR_DATE)和max(CALC_DATE)来获得“实际价格”,但无法获得第二个max dates。 有什么想法吗


谢谢大家!

这应该适合您:

select item, loc, max(case when rownum=1 then price else null end) actual_price, 
max(case when rownum=2 then price else null end) old_price
from
(select *,  row_number() over(partition by item, loc order by start_date desc) rownum
from yourtable)a
group by item, loc

我假设第1项的旧价格应该是1,20?如果第2项有平局,会发生什么?你希望有三张唱片还是只有两张?是的,旧的价格应该是1,20。如果有平局,它应该只给出两张记录。一个是实际价格,另一个是旧价格谢谢你的反馈,但它给了我这个错误:00923。00000-“FROM关键字not found where expected”第4行错误:列:10有什么想法吗?不确定对我来说效果很好-确保您正确复制了整个查询,并将“yourtable”替换为表名我必须更改表中某些列的“*”,并且它可以根据我的需要工作!谢谢你的帮助很高兴听到!