0
我有一張表,flight_schedule
,它由一堆飛行段組成。在下面,我有一個Terradata SQL查詢,它可以創建芝加哥和丹佛之間的兩個分段行程列表。即每排有兩個航班,最終將乘客從芝加哥運送到丹佛。例如,第一行包含從芝加哥到奧馬哈的航程信息,然後是從奧馬哈到丹佛的後期航程。這個查詢工作得很好。將選定的表格加入交叉連接表
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;
我想用LEFT這兩個查詢組合JOIN,兩次,使每個航班都有一個對應的avail_seats
值。我怎樣才能做到這一點?
爲了增加透明度,我覺得我的期望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