我正忙着努力达到理想的效果。这是我的桌子。
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)获得“实际价格”,但是无法获得第二个最大日期。 有什么想法吗?
谢谢!
答案 0 :(得分:1)
这应该适合你:
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