如何在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

回到顶部