在最后一个查询中,将批处理 2 包含在结果中作为“处理”的好方法是什么?每个批次都有几个子任务。该批次的整体状态是我正在寻找的。
任务状态含义:
- 1=待定
- 2=处理
- 3=重试
- 4=完成
- 5=失败
批次状态:
- 批次 1 正在处理
- Batch 2 正在处理中,但尚未提取待处理的任务。这将在几秒钟后发生,所以我对“睡眠”类型的状态不感兴趣。
- 批处理 3 正在处理重试任务
- 批次 4 未处理,因为没有提取任何内容。
- 第 5 批未处理,因为它已完成
- 批处理 6 未处理,因为有一个失败的任务。
代码:
IF OBJECT_ID('tempdb..#t') IS NOT NULL DROP TABLE #t
CREATE TABLE #t (batchId INT, taskStatus INT)
INSERT INTO #t(batchId, taskStatus) VALUES
(1, 1),
(1, 2),
(1, 4),
(2, 1),
(2, 1),
(2, 4),
(2, 4),
(3, 3),
(3, 4),
(4, 1),
(4, 1),
(5, 4),
(5, 4),
(6, 5),
(6, 4)
SELECT
batchId,
1 processing
FROM #t
WHERE taskStatus IN (2,3)
GROUP BY batchId