我有一个包含3列状态,下一个状态和默认值(0,1)的数据列表。我如何遍历数据并获取默认= 1的最后状态。
这是我的桌子。
ID Status Next Status Default
--------------------------------
1 PASS FAIL 0
2 PASS HOLD 0
3 PASS RELE 1
4 FAIL EXEM 0
5 FAIL HOLD 1
6 HOLD RELE 0
7 RELE HOLD 0
8 RELE CANC 0
示例我的Status
是PASS
,现在它将在表中循环并检查默认状态为1的最后状态是什么。
Samle1:通过-RELE-1
由于RELE处于下一个状态,因此它将查看RELE。
RELE CANC 0,当下一个状态默认值变为0时,它将获得RELE。
答案 0 :(得分:0)
我有一个包含3列状态,下一个状态和 默认值(0,1)。我如何遍历数据并获取最新状态 其中默认= 1。
这是我的桌子。
Status Next Status Default -------------------------------- PASS FAIL 0 PASS HOLD 0 PASS RELE 1 FAIL EXEM 0 FAIL HOLD 1 HOLD RELE 0 RELE HOLD 0 RELE CANC 0
例如,我的状态为PASS,现在它将在表中循环并检查 默认为1的最后状态是什么。
Samle1:通过-RELE-1
由于RELE处于下一个状态,因此它将查看RELE。
RELE CANC 0,当下一个状态默认值变为0时,它将获得 RELE。
我不确定我是否正确理解了要求。
这是我的理解:对于任何给定状态,您都需要弄清楚其先前的状态(如果有),默认值为1。而且我知道“状态”列值是给定值的先前状态连续显示“下一个状态”列。如果我的理解有误,请纠正我。
基于这种理解,以下是两个查询,具体取决于您对该程序的输入是什么:
SELECT DISTINCT
S.Status
,LastStatus = OA.Status
FROM Status S
OUTER APPLY (
SELECT TOP 1 SI.Status
FROM Status SI
WHERE SI.[Next Status] = S.Status
AND SI.Default = 1
) OA
WHERE S.Status = '<input status name>';
2>如果您需要为“状态”栏中的每个状态检索此状态
表格,然后:
SELECT DISTINCT
S.Status
,LastStatus = OA.Status
FROM Status S
OUTER APPLY (
SELECT TOP 1 SI.Status
FROM Status SI
WHERE SI.[Next Status] = S.Status
AND SI.Default = 1
) OA;