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

T-SQL需求:跟踪CHANGE_ID任务按时完成状态及标记

T-SQL实现方案优化与跟踪建议

一、优化后的T-SQL代码

WITH ChangeTaskStats AS (
    SELECT 
        CHANGE_ID,
        CHANGE_TARGET,
        -- 统计已完成任务数,同时标记是否包含TAS003
        SUM(CASE WHEN TASK_STATUS = 'COMPLETED' THEN 1 ELSE 0 END) AS CompletedTaskCount,
        MAX(CASE WHEN TASK_ID = 'TAS003' THEN 1 ELSE 0 END) AS HasTAS003,
        -- 获取首个逾期或未完成的任务ID
        MIN(CASE 
            WHEN TASK_STATUS != 'COMPLETED' OR TASK_COMPLETED_DATE > CHANGE_TARGET THEN TASK_ID 
            ELSE NULL 
        END) AS FirstIssueTaskID
    FROM CRQ_TRACKER
    GROUP BY CHANGE_ID, CHANGE_TARGET
)
SELECT 
    CHANGE_ID,
    CHANGE_TARGET,
    -- 标记CHANGE状态:全任务完成+含TAS003才为COMPLETED,否则PENDING
    CASE 
        WHEN CompletedTaskCount = 3 AND HasTAS003 = 1 THEN 'COMPLETED'
        ELSE 'PENDING'
    END AS CHANGE_STATUS,
    -- 处理缺失TAS003的情况,优先显示TAS003为延迟原因
    CASE 
        WHEN HasTAS003 = 0 THEN 'TAS003'
        ELSE FirstIssueTaskID
    END AS TASK_DELAY_CAUSED_BY,
    -- 可选:增加目标日期状态标识,方便跟踪
    CASE 
        WHEN CHANGE_TARGET < GETDATE() THEN '已过期'
        WHEN CHANGE_TARGET BETWEEN GETDATE() AND DATEADD(DAY, 3, GETDATE()) THEN '即将到期'
        ELSE '未到期'
    END AS TARGET_DATE_STATUS
FROM ChangeTaskStats
-- 筛选未达标CHANGE_ID:未全完成、缺TAS003、存在逾期/未完成任务
WHERE 
    CompletedTaskCount < 3 
    OR HasTAS003 = 0
    OR EXISTS (
        SELECT 1 
        FROM CRQ_TRACKER t2 
        WHERE t2.CHANGE_ID = ChangeTaskStats.CHANGE_ID 
          AND (t2.TASK_STATUS != 'COMPLETED' OR t2.TASK_COMPLETED_DATE > ChangeTaskStats.CHANGE_TARGET)
    )
ORDER BY CHANGE_TARGET;

二、功能点对应实现说明

  • 排查未达标CHANGE_ID:通过聚合统计和子查询,精准筛选出任务未全完成、缺失TAS003、存在逾期/未完成任务的记录
  • CHANGE_ID状态标记:只有当完成任务数为3且包含TAS003时,才标记为COMPLETED,其余情况一律判定为PENDING
  • 延迟原因任务ID:优先判断是否缺失TAS003,若缺失直接显示TAS003;否则取首个未完成或逾期的任务ID
  • 强制检查TAS003:通过聚合函数MAX(CASE WHEN TASK_ID='TAS003' THEN 1 ELSE 0 END)判断任务是否存在,缺失直接判定为未完成

三、关于TARGET日期跟踪的建议

是否分开跟踪取决于业务需求:

  • 如果需要针对性处理不同时间节点的CHANGE_ID,建议拆分跟踪:
    • 已过期组:聚焦CHANGE_TARGET < GETDATE()且状态为PENDING的记录,重点督促完成
    • 即将到期组:比如筛选CHANGE_TARGET在未来3天内且状态为PENDING的记录,提前预警跟进
  • 如果只需要统一监控未完成的CHANGE_ID,无需单独拆分,保留结果中的TARGET_DATE_STATUS字段即可快速区分状态

内容的提问来源于stack exchange,提问作者apex-user

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:02:02