私はフライトセグメントの束で構成されるテーブルflight_schedule
を持っています。私はシカゴとデンバーの間の2つのセグメントの旅程のリストを作成するTerradata SQLクエリを持っています。すなわち、各列に2つのフライトがあり、最終的にシカゴからデンバーに乗客を得る。たとえば、最初の行にはシカゴからオマハまでの脚のフライト情報が含まれ、その後オマハからデンバーまでの後のレッグが含まれます。このクエリは正常に動作します。クロステーブルに選択したテーブルを結合する
SELECT A.flt_num, A.dprt_sta_cd, A.arrv_sta_cd, A.sch_dprt_dtml, A.sch_arrv_dtml,
B.flt_num, B.dprt_sta_cd, B.arrv_sta_cd, B.sch_dprt_dtml, B.sch_arrv_dtml
FROM
flight_schedule A
CROSS JOIN
flight_schedule B
WHERE
A.dprt_sta_cd = 'Chicago' AND
B.arrv_sta_cd = 'Denver' AND
A.arrv_sta_cd = B.dprt_sta_cd AND
A.sch_arrv_dtml < B.sch_dprt_dtml
ORDER BY B.sch_arrv_dtml;
私は、各フライト番号ごとに異なるキャビンで空席で構成されて別のテーブル、flight_seat_inventory
を、持っています。以下のクエリは、各便名の合計利用可能座席を集計します。このクエリもA-OKです。
SELECT flt_num, SUM(seat_cnt) as avail_seats
FROM flight_seat_inventory
GROUP BY flt_num;
は、私は各フライトは、対応するavail_seats
値を持つように、二回、JOINをLEFTとこれらの2つのクエリを結合したいです。これどうやってするの?追加明確にするために
、私は私の希望Select
文は次のようになりますと思う:
SELECT A.flt_num, A.dprt_sta_cd, A.arrv_sta_cd, A.sch_dprt_dtml, A.sch_arrv_dtml, C.avail_seats
B.flt_num, B.dprt_sta_cd, B.arrv_sta_cd, B.sch_dprt_dtml, B.sch_arrv_dtml, D.avail_seats
flight_schedule
が巨大なので、私はそれがCROSS JOIN
後LEFT JOIN
を行うには、より効率的だと思います。ここでも、Teradata SQLを使用します。
ありがとうございます!
ビューのたくさん、コメントはありません....明確ではない何かですか?テキストの壁は威圧していますか? – rvictordelta
サンプルテーブルを作成し、サンプルクエリを生成します。これにより、あなたの投稿についてもっと理解しやすくなります。このリンクを使用してくださいhttp://sqlfiddle.com/#!6 – user1413