"처리 중"결과에 배치 2를 포함시키는 것이 가장 좋은 방법은 무엇입니까? 각 배치에는 여러 하위 작업이 있습니다. 일괄 처리의 전반적인 상태가 내가 찾고있는 것입니다.여러 행에서 그룹화 된 의미를 유도하십시오.
작업 상태 의미 :
- 1 = 보류
- 2 = 처리
- 3 =
- 4 = 완전한
- 5 =이
배치 상태를 실패한 재 시도 :
- 배치 1이 처리 중임
- 배치 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
작업 2는 보류 중 상태와 완료 상태를 모두 가지고 있습니다. 두 코드를 사용하여 작업 상태를 처리로 간주하거나 결정하는 방법은 무엇입니까? –
taskStatus IN (2,3)에서 검색하는 경우 taskStatus가 절대로 null이되지 않습니다. 해당 입력을 taskStatus별로 정렬하십시오. "일부 작업을 처리하고 다른 작업이 보류중인 경우 처리"는 분명하지 않습니다. – Paparazzi
마지막 쿼리의 상태는 전체 일괄 처리에 대한 것입니다. 일괄 처리에는 여러 개의 하위 작업이 있으며 일부 작업이 완료되고 다른 작업이 보류중인 경우 "처리 중"으로 간주됩니다. –