SQL Query用于检索连接相同表的数据

时间:2018-02-15 11:39:19

标签: sql sybase

我有一张表和下面的数据。 每个记录的ID都是不同的,recno是记录号,它会在下表中进行多次状态更改。我需要查询处于错误状态且永远不会进入关闭状态的recno。从下面的示例数据我得到recno 3作为结果,因为记录1和2有错误状态但是那些已经关闭状态。

**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

1 个答案:

答案 0 :(得分:0)

如果您想要最后一个状态,可以执行以下操作:

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都支持窗口函数。