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”替换为表名我必须更改表中某些列的“*”,并且它可以根据我的需要工作!谢谢你的帮助很高兴听到!