我有一些像这样的记录的表:挑选最新记录在甲骨文
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
现在,如果我给一些日期(例如2014年12月1日),它应该返回我最新的登记日期(即01和05)与状态。所以输出像:
01 123456789 01-JAN-13 31-DEC-13 Inactive
05 987654321 01-FEB-13 31-DEC-99 Active
我有SQL计算状态,但不能只有一个记录。我怎么弄到的?
select id, member_id, enroll_date, end_date,
case
when TO_DATE(:dateOfCall, 'MM/DD/YYYY') between enroll_date and end_date then 'Active'
else 'Inactive'
end
Status
from myView;
最新的日期总是在最后? – 2014-12-04 19:35:43
因此,如果提供的日期恰好是2/28/06 ...你想要ID 02还是想要01?我认为如果在提供数据时没有找到记录,那么您需要maximum enroll_date和end_date,否则您希望记录的日期在所提供的日期之间。 – xQbert 2014-12-04 19:37:22
@ xQbert - 如果在范围内给定日期,那么返回该记录,否则返回max enroll_date。 – 2014-12-04 19:47:08