create table TeamTable (
name varchar(10)
)
insert Into TeamTable
select 'Team A'
union select 'Team B'
union select 'Team C'
union select '-bye-'
;
select * from TeamTable;
with seed as (
select t1.Name as home, t2.Name as away
from TeamTable t1
inner join TeamTable t2 on t1.name < t2.name
),
seed1 as (
select
*,
row_number() over (order by away) rn,
lag(away) over (order by away) prev_away
from seed
) select
rn,
CASE WHEN prev_away is not null and away = prev_away THEN away ELSE home END home,
CASE WHEN prev_away is null or away != prev_away THEN away ELSE home END away
from seed1
order by rn