我有一些像這樣的記錄的表:挑選最新記錄在甲骨文
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