2つのSQLクエリがあるとしましょう。表Aには、
ID
--
1
1
1
2
3
4
このクエリ、
Select distinct ID1 FROM A
私に与える、
ID
--
1
2
3
4
二つ目
Select ID2 FROM B
それは私に、
ID2
--
8
21
33
43
このレコードセットを取得するにはどうすればよいですか?
ID1 ID2
--- ---
1 8
2 21
3 33
4 43
2つのSQLクエリがあるとしましょう。表Aには、
ID
--
1
1
1
2
3
4
このクエリ、
Select distinct ID1 FROM A
私に与える、
ID
--
1
2
3
4
二つ目
Select ID2 FROM B
それは私に、
ID2
--
8
21
33
43
このレコードセットを取得するにはどうすればよいですか?
ID1 ID2
--- ---
1 8
2 21
3 33
4 43
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を参照してください