1行目にこれが必要なようです。したがって、以下を使用して、PIVOT
:を使用して1行にまとめることができます。
select player_id,
league_id_1,
league_id_2
from
(
select t1.player_id, t1.league_id,
row_number() over(partition by t1.player_id order by t1.league_id) rn
from table1 t1
inner join
(
select player_id
from table1
group by player_id
having count(distinct league_id) > 1
) t2
on t1.player_id = t2.player_id
) x
pivot
(
max(league_id)
for rn in (1 as league_id_1, 2 as league_id_2)
) p;
SQL FiddlewithDemoを参照してください
PIVOT
または、関数にアクセスできない場合はCASE
、aggregateでステートメントを使用できます。
select player_id,
max(case when rn = 1 then league_id end) league_id_1,
max(case when rn = 2 then league_id end) league_id_2
from
(
select t1.player_id, t1.league_id,
row_number() over(partition by t1.player_id order by t1.league_id) rn
from table1 t1
inner join
(
select player_id
from table1
group by player_id
having count(distinct league_id) > 1
) t2
on t1.player_id = t2.player_id
) x
group by player_id;
SQL FiddlewithDemoを参照してください
1行に入れたくない場合は、内部サブクエリを使用できます。
select t1.player_id, t1.league_id
from table1 t1
inner join
(
select player_id
from table1
group by player_id
having count(distinct league_id) > 1
) t2
on t1.player_id = t2.player_id
SQL FiddlewithDemoを参照してください