我写了一个视图,它给了我以下输出
Vessel Name ETA
XYZ 1-Jul-12
XYZ 2-Jul-12
XYZ 3-Jul-12
XYZ 4-Jul-12
XYZ 5-Jul-12
XYZ 6-Jul-12
XYZ 7-Jul-12
其实我想获得如下所示的输出
Vessel Name ETA_1 ETA_2 ETA_3
XYZ 1-Jul-12 2-Jul-12 3-Jul-12
XYZ 2-Jul-12 3-Jul-12 4-Jul-12
XYZ 3-Jul-12 4-Jul-12 5-Jul-12
XYZ 4-Jul-12 5-Jul-12 6-Jul-12
XYZ 5-Jul-12 6-Jul-12 7-Jul-12
可能没有任何船只可用。对于那艘不仅仅有5排的船只,可能没有任何ETA。
为什么选择三个etas?一艘船将于01年1月从A港航行,然后是ETA_FROM日期,并于02年7月在B港口航行,那么这将是ETA_VIA和3月3日至C港口,那么这将是ETA_TO。然后它将于2012年7月4日在7月7日从C港航行到D,然后在这种情况下,ETA_FROM将是02-Jul,ETA_VIA将是03-Jul,ETA_TO应该是4-Jul。三个eta中最小的是ETA_FROM日期,下一个更高的是ETA_VIA日期,下一个更高的是ETA_TO日期。
编辑:我试过这个,但表现很差:select t1.vessel_name,
t1.eta ETA_FROM ,
t2.eta ETA_VIA ,
t3.eta ETA_TO
from
test t1,
test t2,
test t3
where t1.eta<t2.eta and
t3.eta>t2.eta and
t1.eta=(select max(test.eta)
from test
where test.eta<t2.eta)
and t3.eta= (select min(test.eta)
from test
where test.eta>t2.eta)
答案 0 :(得分:3)
select
*
from (
select
vessel,
eta,
lead(eta) over (order by eta) as eta2,
lead(port) over (order by eta) as port2,
lead(eta,2) over (order by eta) as eta3,
lead(port,2) over (order by eta) as port3
from your_view
)
where
eta3 is not null;