2013-05-30 105 views
-3

我在記錄最長效期記錄之後嘗試記錄最早/最短記錄的困難時間。從最長期記錄中捕獲最短生效日期記錄

例子:

Status Date 
Active 8-1-2013 
Active 7-2-2013 
Active 6-1-2012****this is the date I need 
Term  5-30-2012 
Active 4-12-2012 
Term  3-5-2012

你有什麼建議嗎?

+0

考慮到'4-12-2012'小於'Active'組中的'6-1-2012',你用什麼邏輯來確定'6-1-2012'在這裏是最小的? – Kermit

+0

你的問題不清楚。你可以解釋嗎? –

+0

@FreshPrinceOfSO我得到了一個印象,那就是最早的日期是從具有活躍狀態的記錄開始,該活動狀態在最近的日期之後,從具有條件狀態的記錄開始。 –

回答

2

如果我理解正確的話,

select min(Date) from table where status = 'Active' and Date > 
(select max(Date) from table where Status = 'Term') 
+0

謝謝!上面的代碼工作!你知道如何添加一個else語句,如果沒有term記錄,那麼得到第一個活動記錄的最小值?僅有活動的記錄從我的數據集中刪除。 – user2438137

+0

@ user2438137,對於這種情況,使用虛擬開始日期,就像這樣,從表中選擇min(Date),其中status ='Active'且Date> isnull( (從表中選擇max(日期)),其中Status ='Term' ),'19000101')' – iruvar

+0

它幾乎奏效。我能夠捕獲所有沒有期限日期的活動記錄,但是我從上面的原始請求中丟失了正確的活動記錄日期。 – user2438137

0

這裏是語法,在MySQL工作:

select t.* 
from t 
where t.date > (select MAX(t.date) from t where status = 'TERM') 
order by date 
limit 1; 

在其他的數據庫中,limit 1可能是select top 1where rownum = 1甚至別的東西。

如果你只是想要日期,那麼你可以使用1_CR的解決方案。