SQL Serverのバージョンを指定しませんでしたが、SQL Server 2008+を使用している場合、これを行う1つの方法は、row_number()
各テーブルにを追加してからrow_number()
:に参加することです。
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from a
) a
inner join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn
SQL FiddlewithDemoを参照してください
値のみを使用するDISTINCT
場合は、次を使用できるはずです。
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from
(
select distinct id
from a
) a
) a
inner join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn;
SQL FiddlewithDemoを参照してください
各テーブルの行数が異なる場合は、FULL OUTER JOIN
:を使用することをお勧めします。
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from
(
select distinct id
from a
) a
) a
full outer join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn;
SQL FiddlewithDemoを参照してください