我在不同日期有成员注册信息表。我需要一个查询来查找成员信息。根据日期范围获取记录
鉴于它会检查的日期,如果用户在该日期登记或不
如果是它返回日期
,如果没有它返回最新招生一行。
结果中有一个额外的状态栏,显示成员是否注册或者截至今天。我正在使用CASE语句来计算它。
在这里,我有一个查询,我迄今为每个成员显示最新。我需要帮助来修改/合作,以便它也能回到我的真实状态。
select *
from (
select id, member_id, enroll_date, end_date,
CASE
WHEN sysdate between enroll_date and end_date THEN 'Active'
ELSE 'Inactive'
END
Status,
row_number() over (partition by member_id order by enroll_date desc) rn
from myView
)where rn = 1
表结构
ID MEMBER_ID ENROLL_DATE END_DATE
01 123456789 01-JAN-13 31-DEC-13
02 123456789 01-JAN-06 31-DEC-06
03 123456789 01-JAN-11 31-DEC-11
04 987654321 01-JAN-08 31-DEC-12
05 987654321 01-FEB-13 31-DEC-99
06 987654321 01-JAN-13 31-JAN-13
我想基于输入日期成员的信息和状态。
例如
a)如果输入的日期是2005/1/1那么就应该给我01和05
01 123456789 01-JAN-13 31-DEC-13 Inactive
05 987654321 01-FEB-13 31-DEC-99 Active
b)若输入的是2006年1月1日,那么它应该给我02和05
02 123456789 01-JAN-06 31-DEC-06 Inactive
05 987654321 01-FEB-13 31-DEC-99 Active
c)若输入为2013年1月1日,那么它应该给我01和06
01 123456789 01-JAN-13 31-DEC-13 Inactive
06 987654321 01-JAN-13 31-JAN-13 Inactive
d)如果输入是2014年1月1日,那么它应该给我01和05
01 123456789 01-JAN-13 31-DEC-13 Inactive
05 987654321 01-FEB-13 31-DEC-99 Active
不明白你的日期。 99 1999或2099? – 2014-12-04 21:35:09