2013-10-31 79 views
2

好吧,所以我想寫一些SQL,我不知道如何解決這種情況。我有一個類似於下面的表格。基本思想是我需要獲得處於'H'狀態(足夠簡單)的記錄,但是我需要排除處於'H'狀態並稍後轉移到'A'狀態的記錄日期。SQL - 與同一列中的多個值進行比較?

理想情況下,結果應該只返回最後兩個記錄,ID 03和04.你們會怎麼做?

ID  STATUS  STAT_DATE 
01  A  05/01/2013 
01  H  05/01/2012 
02  A  12/01/2013 
02  H  12/01/2012 
03  H  03/01/2009 
04  H  02/01/2008 
+1

您使用的是什麼SQL風格? – geomagas

回答

1

你可以這樣來做:

select * 
from t t1 
where status='H' and not exists(
    select * 
    from t t2 
    where t1.id=t2.id and t2.status='A' and t2.stat_date > t1.stat_date) 

這會給你的表t的所有條目與狀態=「H」那裏是在T具有相同ID的條目,後面的日期和狀態='A'。

+0

完美...這是我所需要的exaclty。非常感謝您的幫助! – user2941280

+0

歡迎您。如果您想接受針對您的問題的這個(或任何其他)解決方案,您可以設置綠色複選標記。 – Fabian

+0

嗨法比安,這是很好的幫助,但我需要知道你的一些東西。可以請你告訴(解釋)什麼「t1.id = t2.id」在做什麼,以及它會如何影響結果?我完全空白,請提供儘可能多的信息。提前致謝 – nakul

相關問題