我写了一个视图,它给了我以下输出
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
可能没有可用的船只。该船可能没有任何 ETA,而不仅仅是 5 排。
为什么是三个 etas?一艘船在 7 月 1 日从 A 港航行,然后这将是 ETA_FROM 日期,然后在 7 月 2 日到 B 港,然后这将是 ETA_VIA,然后在 7 月 3 日到 C 港,然后这将是 ETA_TO。然后它再次于 2012 年 7 月 4 日在 7 月 5 日从 C 港航行到 D,然后在这种情况下,ETA_FROM 将是 02-7 月,ETA_VIA 将是 03-7 月,ETA_TO 应该是 4-7 月。三个 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)