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

如何在SQL Server中创建自动更新Tasking表Status的存储过程

SQL Server存储过程实现Tasking表Status字段更新

需求规则

根据以下逻辑更新Tasking表的Status字段:

  • 当Rate(%)等于100时,Status设为Completed
  • 当Rate(%)不等于100且EndDate早于当前日期时,Status设为Overdue
  • 其余情况Status设为Not started

注:对比你提供的预期输出,Task 2的Status标注为In progress,但按给定规则,该任务Rate(%)=30≠100且EndDate未早于当前日期(假设当前日期为2/19/2024),应归类为Not started。若需要将Rate>0且未过期的任务设为In progress,下文会提供匹配预期输出的调整版代码。

存储过程代码(严格遵循给定规则)

CREATE PROCEDURE UpdateTaskingStatus
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE Tasking
    SET Status = CASE
        WHEN [Rate(%)] = 100 THEN 'Completed'
        WHEN [Rate(%)] <> 100 AND EndDate < CAST(GETDATE() AS DATE) THEN 'Overdue'
        ELSE 'Not started'
    END;
END;

存储过程代码(匹配预期输出逻辑)

如果要和你给出的预期输出一致,需补充规则:当Rate(%)>0且EndDate不早于当前日期时,Status设为In progress,调整后的代码如下:

CREATE PROCEDURE UpdateTaskingStatus
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE Tasking
    SET Status = CASE
        WHEN [Rate(%)] = 100 THEN 'Completed'
        WHEN [Rate(%)] <> 100 AND EndDate < CAST(GETDATE() AS DATE) THEN 'Overdue'
        WHEN [Rate(%)] > 0 AND EndDate >= CAST(GETDATE() AS DATE) THEN 'In progress'
        ELSE 'Not started'
    END;
END;

使用方式

  1. 执行存储过程:
EXEC UpdateTaskingStatus;
  1. 验证更新结果:
SELECT [Task Id], [Task Name], [Start Date], [End Date], [Rate(%)], Status FROM Tasking;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:28