Если я правильно понимаю:
select a.*, row_number() over (partition by col1 order by col1)
from a
intersect
select b.*, row_number() over (partition by col1 order by col1)
from b;
Это добавляет новый порядковый номер в каждую строку.Пересечение перейдет к соответствующему номеру.
Используется partition by col1
- col1
является произвольным.Возможно, вам придется включить все столбцы в partition by
.