日期:2014-05-17  浏览次数:20406 次

工序显示问题
现有一张log表,记录每个产品在每一道工序的通过情况,如下:
id         sn         process       status
1          001          p1          pass
2          001          p2          fail
3          001          p2          fail
4          001          p2          pass
5          001          p3          fail
6          001          p3          pass
7          001          p4          fail


p1,p2,p3,p4代表工序,工序个数不固定,001这个产品在p2工序失败了两次,第三次成功;在p3工序失败一次,第二次成功;在p4工序失败。

现在的需求是:根据sn查询该表,每个工序只显示最新一条记录,且中间工序失败的不显示。
得到类似于如下的结果:

id         sn         process       status
7          001          p4          fail
6          001          p3          pass
4          001          p2          pass
1          001          p1          pass

请各位大牛帮帮忙,感激!
SQL

------解决方案--------------------
SELECT *
FROM TB A
WHERE NOT EXISTS(SELECT 1 FROM TB B WHERE A.sn = B.sn AND A.id < b.id AND A.process = b.process)
and A.sn = '001' --加上你的条件即可。