Nun, da für gibts inzwischen die "lateral table"

Select *
from ATable A
left join lateral table (
select * from BTable B
where b.key < a.key
order by b.key desc
limit 1
)