Если я хорошо понимаю ваши потребности, это может быть следующим способом:
select a.id, description
from tableA A
left join
(select id,
description,
event_date from_date,
lead(event_date) over (partition by id order by event_date) -1 as to_date
from tableB
) B
on (A.id = B.id and a.event_date between b.from_date and b.to_date)
Идея состоит в том, чтобы оценить для каждой строки в tableB
диапазон дат, для которого эта строка, и ееописание, действительно;учитывая это, простое соединение должно делать эту работу.