次の出力を提供するビューを作成しました
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がまったくない可能性があります.
なぜ 3 イータ? 船舶が港 A から 7 月 1 日に出航する場合、これは ETA_FROM の日付になり、港 B に向かう場合は 7 月 2 日、これは ETA_VIA になり、港 C に向かう場合は 7 月 3 日で、これは ETA_TO になります。この場合、ETA_FROM は 7 月 2 日、ETA_VIA は 7 月 3 日、ETA_TO は 7 月 4 日になります。3 つの 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)