2016-12-03 38 views
0

由于我不擅长编写SQL查询以便寻求帮助。SQL查询以获取跳过某些行处理的工作订单

我有如下数据集

我需要编写一个查询来获取所有跳过过程,转移到下一个seq_no,EX的workorderid的:
workorderid = AW1其中有一条线“开”为seq_no = 30和径自 “完成” 为seq_no = 40

最终结果集应如下

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

enter image description here

回答

2

一种方法简单地使用条件汇总:

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

+0

谢谢戈登 – shivareddy

0

这里是另外一个使用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') 
+0

谢谢kbball – shivareddy