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

如何用EXISTS运算符按组筛选最新记录(含File Geodatabase限制)

实现方案

针对你的需求,结合File Geodatabase支持的SQL-92子集(仅支持EXISTS和标量子查询,不支持关联子查询),可以通过以下WHERE子句表达式实现筛选:

WHERE EXISTS (
    SELECT 1
    FROM (
        -- 标量子查询获取当前ASSET_ID对应的最新检查日期
        SELECT MAX(date_) AS max_date
        FROM RoadInsp
        WHERE ASSET_ID = RoadInsp.ASSET_ID
    ) AS max_dates
    -- 匹配当前行的日期为最新日期
    WHERE RoadInsp.date_ = max_dates.max_date
    -- 若同一资产有多条最新日期记录,任选其一(这里用INSP_ID取最小的示例,可替换为你的唯一标识列)
    AND RoadInsp.INSP_ID = (
        SELECT MIN(INSP_ID)
        FROM RoadInsp
        WHERE ASSET_ID = RoadInsp.ASSET_ID AND date_ = max_dates.max_date
    )
)

关键说明

  • 内层标量子查询SELECT MAX(date_) ...用于获取当前ASSET_ID对应的最新检查日期,适配File Geodatabase的语法支持要求。
  • EXISTS子句用于判断当前行是否属于该资产的最新日期组;若无需处理同日期重复行,可直接去掉最后那个标量子查询部分,仅保留RoadInsp.date_ = max_dates.max_date。
  • 当同一资产存在多条最新日期的记录时,通过取唯一标识列(示例中为INSP_ID)的最小/最大值,实现“任选其一”的效果,确保返回结果唯一。

模拟数据验证(Oracle 18c环境)

如果用CTE模拟RoadInsp表数据,完整查询示例如下(仅用于验证,实际只需使用上述WHERE子句部分):

WITH RoadInsp AS (
    SELECT 'RD001' AS ASSET_ID, DATE '2024-01-01' AS date_, 'INSP001' AS INSP_ID FROM DUAL
    UNION ALL SELECT 'RD001' AS ASSET_ID, DATE '2024-03-15' AS date_, 'INSP002' AS INSP_ID FROM DUAL
    UNION ALL SELECT 'RD001' AS ASSET_ID, DATE '2024-03-15' AS date_, 'INSP003' AS INSP_ID FROM DUAL
    UNION ALL SELECT 'RD002' AS ASSET_ID, DATE '2023-12-20' AS date_, 'INSP004' AS INSP_ID FROM DUAL
)
SELECT *
FROM RoadInsp
WHERE EXISTS (
    SELECT 1
    FROM (
        SELECT MAX(date_) AS max_date
        FROM RoadInsp
        WHERE ASSET_ID = RoadInsp.ASSET_ID
    ) AS max_dates
    WHERE RoadInsp.date_ = max_dates.max_date
    AND RoadInsp.INSP_ID = (
        SELECT MIN(INSP_ID)
        FROM RoadInsp
        WHERE ASSET_ID = RoadInsp.ASSET_ID AND date_ = max_dates.max_date
    )
);

该查询会返回每个ASSET_ID的最新日期记录,若有重复则返回INSP_ID最小的那条。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:10:21