You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle数据库航空预订表生成全行程Itinerary计算列SQL实现问询

Oracle 实现SQL

以下语句适用于Oracle 11gR2及以上版本,直接替换你的表名为实际表名即可执行:

SELECT 
    Recordlocator,
    Sequencenmbr,
    Sequenceair,
    DepartureDateTime,
    DepartAirport,
    ArrAirport,
    -- 按规则拼接完整行程
    LISTAGG(DepartAirport, '-') WITHIN GROUP (ORDER BY Sequenceair) 
        OVER (PARTITION BY Recordlocator, Sequencenmbr) 
    || '-' ||
    -- 取当前预订版本最后一段航段的到达机场
    FIRST_VALUE(ArrAirport) OVER (
        PARTITION BY Recordlocator, Sequencenmbr 
        ORDER BY Sequenceair DESC
        ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
    ) AS Itinerary
FROM 你的表名;

逻辑说明

  1. 用LISTAGG开窗函数,按Recordlocator、Sequencenmbr分组,组内按Sequenceair升序拼接所有航段的出发机场,用短横线连接
  2. 用FIRST_VALUE开窗函数,同分组内按Sequenceair倒序排序,取第一个值即为该预订版本最后一段航段的到达机场,拼到出发机场拼接串末尾
  3. 开窗函数会为分组内每一行都返回相同的拼接结果,符合每行都展示完整行程的需求

内容的提问来源于stack exchange,提问作者Viet Anh Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:09:01