Вы можете использовать join
. Вот один из методов - предполагая, что идентификаторы являются непрерывными без пробелов:
select a.id, b.*
from a join
(select b.*, count(distinct id) over () as num_ids
from b
) b
on mod(a.id, b.num_ids) = mod(b.id, b.num_ids);
Если вы не можете гарантировать, что идентификаторы являются непрерывными:
select a.id, b.*
from (select a.*, row_number() over (order by id) as seqnum
from a
) a join
(select b.*, count(distinct id) over () as num_ids,
dense_rank() over (order by id) as seqnum
from b
) b
on mod(a.seqnum, b.num_ids) = mod(b.seqnum, b.num_ids);