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

Oracle SQL中如何找出不符合日期接续规则的数据行

使用LAG()函数找出违规数据行

先理清LAG()函数的核心用法

LAG()是SQL窗口函数,作用是访问当前行之前指定行数的字段值。针对你的需求,我们需要获取每一行的上一行Enddate值,再和当前行的Date做对比,就能找出不符合规则的数据。

具体SQL实现步骤

假设你的表名为your_table,先通过子查询给每行添加上一行的Enddate:

SELECT 
    Date,
    Enddate,
    -- 按Date排序后,获取上一行的Enddate值
    LAG(Enddate) OVER (ORDER BY Date) AS previous_enddate
FROM your_table;

接着筛选出Date与previous_enddate不相等的行,就是违规数据:

SELECT *
FROM (
    SELECT 
        Date,
        Enddate,
        LAG(Enddate) OVER (ORDER BY Date) AS previous_enddate
    FROM your_table
) AS subquery
-- 排除无前置行的首行(可选),只对比有上一行的数据
WHERE Date != previous_enddate AND previous_enddate IS NOT NULL;

针对你示例数据的结果

运行上述SQL后,会精准返回第4行违规数据:

DateEnddateprevious_enddate
200120222601202224012022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:50:33