[英]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.