SQL 查询得到跳过某些行处理的工单

SQL Query to get the workorders which skipped some lines processing

因为我不是编写 SQL 查询的专家,所以需要帮助。

我有下面给定的数据集

我需要编写一个查询来获取所有已跳过该过程并移至下一个 seq_no 的 workorderid,例如:
workorderid = AW1 其中有一行 "open" for seq_no=30 并继续到 "complete" for seq_no = 40

最终结果集应如下所示

Workorderid
----------- 
AW1  
AW3

一种方法简单地使用条件聚合:

select workorderid
from t
group by workorderid
having (max(case when status = 'Open' then seq_no end) <
        max(case when status = 'Complete' then seq_no end)
       )

也就是最后一个'Open'后面有没有'Complete',根据seq_no.

这是另一个使用 EXISTS 的方法:

SELECT t1.workorderid
FROM t t1
WHERE t1.status = 'Open'
AND EXISTS
(SELECT 1
 FROM t t2
 WHERE t2.workorderid = t1.workorderid
 AND t2.seq_no > t1.seq_no
 AND t2.status = 'Complete')