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

使用SQL展示前导、滞后记录关键信息的技术问询

展示前导(LEAD)与滞后(LAG)记录关键信息的SQL实现

我帮你优化并完善了SQL语句,不仅能计算出前导/滞后的日期,还会关联展示对应版本的ID,让版本间的衔接关系更直观。下面是完整的实现:

WITH version_data AS (
    SELECT 'Vrandom1' AS VERSION_ID, CAST('2018-03-22' AS DATE) AS START_DATE, '9999-12-31' AS END_DATE, 1 AS IS_APPROVED
    UNION ALL
    SELECT 'Vrandom2' AS VERSION_ID, CAST('2020-05-15' AS DATE) AS START_DATE, '9999-12-31' AS END_DATE, 1 AS IS_APPROVED
    UNION ALL
    SELECT 'Vrandom3' AS VERSION_ID, CAST('2022-09-01' AS DATE) AS START_DATE, '9999-12-31' AS END_DATE, 1 AS IS_APPROVED
)
SELECT
    v.VERSION_ID AS CURRENT_VERSION,
    v.START_DATE AS CURRENT_START_DATE,
    -- 计算当前版本的实际结束日期(下一个版本开始前一天,若无则用默认值)
    CAST(ISNULL(DATEADD(DAY, -1, LEAD(v.START_DATE) OVER (ORDER BY v.START_DATE)), '9999-12-31') AS DATE) AS CURRENT_END_DATE,
    -- 获取前导(下一个)版本的信息
    LEAD(v.VERSION_ID) OVER (ORDER BY v.START_DATE) AS NEXT_VERSION,
    LEAD(v.START_DATE) OVER (ORDER BY v.START_DATE) AS NEXT_VERSION_START_DATE,
    -- 获取滞后(上一个)版本的信息
    LAG(v.VERSION_ID) OVER (ORDER BY v.START_DATE) AS PREVIOUS_VERSION,
    LAG(v.START_DATE) OVER (ORDER BY v.START_DATE) AS PREVIOUS_VERSION_START_DATE
FROM version_data v
ORDER BY v.START_DATE;

关键逻辑说明

  • CTE version_data:这里用WITH子句封装了你的示例数据,比嵌套子查询更易读,后续可以直接替换成你的实际表名。
  • LEAD() 函数:按START_DATE排序后,获取当前行的下一行数据,用来展示下一个版本的ID和开始日期,同时计算当前版本的有效结束日期(下一个版本开始的前一天)。
  • LAG() 函数:同理,获取当前行的上一行数据,展示上一个版本的ID和开始日期。
  • 默认值处理:用ISNULL()处理首尾行的情况(第一个版本没有上一个,最后一个版本没有下一个),给这些位置填充明确的默认提示(这里用9999-12-31作为结束日期默认值,版本ID则显示为NULL,你可以根据需求调整)。

示例输出

CURRENT_VERSIONCURRENT_START_DATECURRENT_END_DATENEXT_VERSIONNEXT_VERSION_START_DATEPREVIOUS_VERSIONPREVIOUS_VERSION_START_DATE
Vrandom12018-03-222020-05-14Vrandom22020-05-15NULLNULL
Vrandom22020-05-152022-08-31Vrandom32022-09-01Vrandom12018-03-22
Vrandom32022-09-019999-12-31NULLNULLVrandom22020-05-15

这样就能清晰看到每个版本的时间范围,以及它和前后版本的关联关系了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:25:11