我写了一个视图,它给出了以下输出。
实际上,我想要获得以下输出结果。
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行。
为什么需要三个预计到达时间?如果一艘船从A港口出发于7月1日,则这将是ETA_FROM日期;然后在7月2日抵达B港口,则这将是ETA_VIA日期;最后,在7月3日抵达C港口,则这将是ETA_TO日期。然后,它又从C港口出发前往D港口,并在7月4日至5日之间到达。在这种情况下,ETA_FROM日期应为7月2日,ETA_VIA日期应为7月3日,ETA_TO日期应为7月4日。三个预计到达时间中最早的是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)