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

如何在Microsoft SQL Server中查询生成连续有序的项目工作流日程

解决方案

你可以直接用SQL Server提供的LEAD窗口函数实现需求,核心逻辑是按项目分组后,取当前阶段下一个阶段的开始日期减1天,作为当前阶段的结束日期,就能得到连续的日程区间。

具体查询语句

SELECT
    project_id,
    phase,
    start_date,
    -- 下一个阶段开始日期减1天为当前阶段结束日期,最后一个阶段默认结束日期取当前开始日期,可按需调整
    ISNULL(
        DATEADD(DAY, -1, LEAD(start_date) OVER (PARTITION BY project_id ORDER BY start_date)),
        start_date
    ) AS end_date
FROM project_phases
ORDER BY project_id, start_date;

结果说明

用你提供的测试数据执行后,输出结果如下:

project_idphasestart_dateend_date
1design2021-01-012021-01-01
1development2021-01-022021-01-02
1deployment2021-01-032021-01-03

如果你需要自定义最后一个阶段的结束日期,比如改成项目指定的交付日期,或者查询当天的日期,直接修改ISNULL的第二个参数即可,比如改成GETDATE()就会取执行查询当天的日期作为最后一个阶段的结束日期。
如果需要把生成的日程保存为新表,在SELECT后加INTO 新表名即可:

SELECT
    project_id,
    phase,
    start_date,
    ISNULL(DATEADD(DAY, -1, LEAD(start_date) OVER (PARTITION BY project_id ORDER BY start_date)), start_date) AS end_date
INTO project_schedule
FROM project_phases;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:15:08