我有一張名為“作業”的表。每個作業都有一個狀態,并且可以依賴于 0 個或多個其他作業,因此還有一個連接表來跟蹤這種多對多關系。我正在嘗試找到依賴成功的作業。
職位表:
Id | Name | Status
------------------
1 | A | WaitingForDependency
2 | B | WaitingToRun
3 | C | PartiallySucceeded
4 | D | Succeeded
連接表:
JobId | DependsOn
-----------------
1 | 3
1 | 4
狀態可以是:
- 等待依賴
- 等待運行
- 跑步
- 部分成功
- 成功
- 失敗的
在上面的示例表中,我想定位作業 A,因為它的依賴項 C 和 D 的狀態為成功或部分成功。
uj5u.com熱心網友回復:
看看這是否適合您,一種方法是exists檢查鏈接作業的合格狀態計數是否與鏈接作業的計數匹配:
select *
from jobs j
where exists (
select *
from jointable t
left join jobs js on js.Id = t.DependsOn
and js.[status] in ('PartiallySucceeded','Succeeded')
where t.jobId = j.Id
group by t.jobId
having Count(*) = Count(js.[status])
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468705.html
標籤:tsql
上一篇:在T-SQL中回圈游標
