我在記錄最長效期記錄之後嘗試記錄最早/最短記錄的困難時間。從最長期記錄中捕獲最短生效日期記錄
例子:
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
你有什麼建議嗎?
我在記錄最長效期記錄之後嘗試記錄最早/最短記錄的困難時間。從最長期記錄中捕獲最短生效日期記錄
例子:
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
你有什麼建議嗎?
如果我理解正確的話,
select min(Date) from table where status = 'Active' and Date >
(select max(Date) from table where Status = 'Term')
謝謝!上面的代碼工作!你知道如何添加一個else語句,如果沒有term記錄,那麼得到第一個活動記錄的最小值?僅有活動的記錄從我的數據集中刪除。 – user2438137
@ user2438137,對於這種情況,使用虛擬開始日期,就像這樣,從表中選擇min(Date),其中status ='Active'且Date> isnull( (從表中選擇max(日期)),其中Status ='Term' ),'19000101')' – iruvar
它幾乎奏效。我能夠捕獲所有沒有期限日期的活動記錄,但是我從上面的原始請求中丟失了正確的活動記錄日期。 – user2438137
這裏是語法,在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 1
或where rownum = 1
甚至別的東西。
如果你只是想要日期,那麼你可以使用1_CR的解決方案。
考慮到'4-12-2012'小於'Active'組中的'6-1-2012',你用什麼邏輯來確定'6-1-2012'在這裏是最小的? – Kermit
你的問題不清楚。你可以解釋嗎? –
@FreshPrinceOfSO我得到了一個印象,那就是最早的日期是從具有活躍狀態的記錄開始,該活動狀態在最近的日期之後,從具有條件狀態的記錄開始。 –