我在记录最长效期记录之后尝试记录最早/最短记录的困难时间。从最长期记录中捕获最短生效日期记录
例子:
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我得到了一个印象,那就是最早的日期是从具有活跃状态的记录开始,该活动状态在最近的日期之后,从具有条件状态的记录开始。 –