如何在Oracle中获得当前的生效日期?
我有一个如下表:
TID TName有效日期1 A 2011-7-1
2 A 2011-8-1
3 A 2011-9-1
4 A 2011-10-1
5 B 2011-8-1
6 B 2011-9-1
7 B 2011-10-1
8 C 2011-9-1
如果今天是2011-9-10,我希望查询结果是这样的:
TID TName有效日期状态1 A 2011-7-1无效
2 A 2011-8-1无效
3 A 2011-9-1有效
4 A 2011-10-1不活动
5 B 2011-8-1无效
6 B 2011-9-1有效
7 B 2011-10-1无效
8 C 2011-9-1有效
如果今天是2011-10-2,则查询结果将如下所示:
TID TName有效日期状态1 A 2011-7-1无效
2 A 2011-8-1无效
3 A 2011-9-1无效
4 A 2011-10-1有效
5 B 2011-8-1无效
6 B 2011-9-1无效
7 B 2011-10-1有效
8 C 2011-9-1有效
查询结果将再添加一个名为“状态”的列,并且状态值基于今天的值并将其与列生效日期进行比较。最长有效日将显示为“有效”状态。如果今天的值介于两个记录之间,则后者为“非活动”状态。
如何编写语句以在oracle中获得此结果?
回答:
尝试:
select TID, TName,
EffectiveDate,
decode(sign(EffectiveDate - (select max(T2.EffectiveDate)
from MyTable T2
where T1.Tname=T2.Tname and
T2.EffectiveDate <= sysdate)),
-1,'Invalid',
0,'Valid',
'Inactive') Status
from MyTable T1
以上是 如何在Oracle中获得当前的生效日期? 的全部内容, 来源链接: utcz.com/qa/411712.html