由于我不擅长编写SQL查询以便寻求帮助。SQL查询以获取跳过某些行处理的工作订单
我有如下数据集
我需要编写一个查询来获取所有跳过过程,转移到下一个seq_no,EX的workorderid的:
workorderid = AW1其中有一条线“开”为seq_no = 30和径自 “完成” 为seq_no = 40
最终结果集应如下
Workorderid
-----------
AW1
AW3
由于我不擅长编写SQL查询以便寻求帮助。SQL查询以获取跳过某些行处理的工作订单
我有如下数据集
我需要编写一个查询来获取所有跳过过程,转移到下一个seq_no,EX的workorderid的:
workorderid = AW1其中有一条线“开”为seq_no = 30和径自 “完成” 为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')
谢谢kbball – shivareddy
谢谢戈登 – shivareddy