[英]SQL Query to retrieve data joining same table
我有一个表和数据如下。 每个记录的ID都是不同的,RECNO是记录号,其状态会发生多种变化,如下表所示。 我需要查询处于错误状态且永远不会进入关闭状态的recno。 从下面的样本数据中,由于记录1和2具有错误状态,但是记录处于关闭状态,因此我应该得到recno 3。
**ID recno status**
1 1 Started
2 1 inProgress
3 1 released
4 1 error
5 1 closed
6 2 Started
7 2 inProgress
8 2 released
9 2 error
10 2 error
11 2 Closed
12 3 Started
13 3 inProgress
14 3 released
15 3 error
如果您想要最后的状态,可以执行以下操作:
select t.*
from t
where t.id = (select max(t2.id) from t t2 where t2.recno = t.recno);
如果您想要处于错误状态的那些:
select t.*
from t
where t.id = (select max(t2.id) from t t2 where t2.recno = t.recno) and
t.status = 'error';
注意:在大多数数据库中,甚至在某些Sybase版本中,也可以对查询使用row_number()
。 但是,并非所有版本的Sybase都支持窗口功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.