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

如何在SQL Server中从多步骤状态计算流程的整体进度状态?

SQL Server 多步骤流程整体状态查询方案

根据你给出的状态判断规则,我们可以通过分组判断的方式实现每个流程的整体状态计算,核心逻辑是按优先级依次判断:只要存在in-progress的步骤就优先返回该状态,其次判断是否全为queued,最后默认全为finished。

基础查询(仅返回processId和整体状态)

SELECT 
    processId,
    CASE
        -- 优先级最高:只要有步骤处于'in-progress',整体状态即为该值
        WHEN COUNT(CASE WHEN status = 'in-progress' THEN 1 END) > 0
            THEN 'in-progress'
        -- 其次:所有步骤都是'queued'时返回该状态
        WHEN COUNT(CASE WHEN status != 'queued' THEN 1 END) = 0
            THEN 'queued'
        -- 最后:排除前两种情况,必然是所有步骤都为'finished'
        ELSE 'finished'
    END AS overallStatus
FROM Step
GROUP BY processId;

关联Process表查询(包含流程其他字段)

如果需要同时查询Process表的其他信息,可以关联Process表后进行状态判断:

SELECT 
    p.id AS processId,
    p.[other stuff], -- 替换为你需要的实际字段名
    CASE
        WHEN EXISTS (SELECT 1 FROM Step s WHERE s.processId = p.id AND s.status = 'in-progress')
            THEN 'in-progress'
        WHEN NOT EXISTS (SELECT 1 FROM Step s WHERE s.processId = p.id AND s.status != 'queued')
            THEN 'queued'
        ELSE 'finished'
    END AS overallStatus
FROM Process p;

逻辑说明

  1. in-progress优先级最高:无论其他步骤状态如何,只要存在一个in-progress的步骤,流程整体状态直接判定为in-progress
  2. 全queued判断:当没有in-progress步骤时,检查所有步骤是否均为queued,是则返回该状态
  3. 默认finished:排除前两种情况后,剩余场景必然是所有步骤都处于finished状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:17:19