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

指定日期范围有效税率查询SQL异常:预期三条结果缺失一条

税率查询SQL逻辑修正

原SQL的NOT EXISTS子句逻辑错误,导致valid_from = '2023-01-01'的记录被误过滤。这条记录的valid_to为NULL,实际有效截止日期是下一条税率的valid_from(2024-07-01)减1天(2024-06-30),该时间段完全落在查询范围(2022-07-01至2024-12-31)内,本应被返回,但原SQL中因为存在后续税率记录,NOT EXISTS条件不成立,所以被排除。

修正后的SQL

使用窗口函数LEAD计算每条税率记录的实际有效截止日期,再判断该日期范围与查询区间是否有重叠:

SELECT valid_from, valid_to, rate
FROM (
    SELECT 
        t.*,
        -- 计算实际有效截止日期:优先用valid_to;无则取下一条税率的生效日减1天;无下一条则用查询结束日
        COALESCE(
            t.valid_to,
            LEAD(t.valid_from) OVER (ORDER BY t.valid_from) - INTERVAL 1 DAY,
            '2024-12-31'
        ) AS actual_valid_to
    FROM taxes t
) AS tax_with_actual_end
WHERE 
    -- 记录生效日不晚于查询结束日
    valid_from <= '2024-12-31'
    -- 实际有效截止日不早于查询起始日
    AND actual_valid_to >= '2022-07-01';

修正逻辑说明

  1. 计算实际有效截止日期:用LEAD窗口函数获取当前记录的下一条税率生效日期,以此确定valid_to为NULL的记录的实际截止日期(下一条生效日减1天);对无后续税率的记录,实际截止日期设为查询结束日。
  2. 筛选重叠区间:保留生效日不晚于查询结束日、且实际截止日不早于查询起始日的记录,确保记录的有效区间与查询范围存在重叠。

执行该SQL后会返回全部三条预期记录:

  • 2022-01-01至2022-12-31的税率,覆盖查询范围的2022-07-01至2022-12-31;
  • 2023-01-01至2024-06-30的税率,覆盖查询范围的2023-01-01至2024-06-30;
  • 2024-07-01至2024-12-31的税率,覆盖查询范围的2024-07-01至2024-12-31。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:20:54