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

Oracle中按车辆分组时如何基于最大最小日期获取对应起止点值

车辆行程聚合查询方案

需求说明

按车辆分组统计每辆车的全程起点、终点及最晚记录时间:

  • 总起点:对应车辆最早一条记录的Start字段值
  • 总终点:对应车辆最晚一条记录的End字段值
  • 结果日期:对应车辆最晚一条记录的Date字段值

实现代码

通用SQL写法(兼容绝大多数支持窗口函数的数据库)

用ROW_NUMBER标记分组内最早、最晚的记录,再关联取值:

WITH ranked_trips AS (
    SELECT 
        Vehicle,
        Start,
        End,
        Date,
        ROW_NUMBER() OVER (PARTITION BY Vehicle ORDER BY Date ASC) AS rn_early,
        ROW_NUMBER() OVER (PARTITION BY Vehicle ORDER BY Date DESC) AS rn_late
    FROM 你的表名
)
SELECT 
    t1.Vehicle,
    t1.Start AS 总起点,
    t2.End AS 总终点,
    t2.Date AS 结果日期
FROM ranked_trips t1
INNER JOIN ranked_trips t2 ON t1.Vehicle = t2.Vehicle
WHERE t1.rn_early = 1 AND t2.rn_late = 1
ORDER BY t1.Vehicle;

简化写法(支持FIRST_VALUE函数的数据库适用)

SELECT DISTINCT
    Vehicle,
    FIRST_VALUE(Start) OVER (PARTITION BY Vehicle ORDER BY Date ASC) AS 总起点,
    LAST_VALUE(End) OVER (PARTITION BY Vehicle ORDER BY Date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS 总终点,
    MAX(Date) OVER (PARTITION BY Vehicle) AS 结果日期
FROM 你的表名
ORDER BY Vehicle;

样例运行结果

Vehicle总起点总终点结果日期
Truck AAD04/01/2021 03:00:00
Truck BCB06/01/2021 01:00:00
Truck CCA10/01/2021 01:00:00

内容的提问来源于stack exchange,提问作者Prem Tech

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:24:10