У меня есть эта таблица с двумя столбцами p1, p2. Я хотел бы иметь максимальное количество комбинаций с ограничением, что никакое значение не должно появляться более одного раза в выводе. p1 - p2 совпадает с p2 - p1
a - b
a - c
b - c
a - d
e - d
b - d
c - d
e - f
d - f
a - g
e - g
b - g
c - g
d - g
f - g
Ожидаемый результат:
f - g
d - c
b - a
e nomatchup
Это данные, с которыми я играю в простой временной таблице.
select *
into #temptable
from (
select 'a' p1,'b' p2 union all
select 'a','c' union all
select 'b','c' union all
select 'a','d' union all
select 'e','d' union all
select 'b','d' union all
select 'c','d' union all
select 'e','f' union all
select 'd','f' union all
select 'a','g' union all
select 'e','g' union all
select 'b','g' union all
select 'c','g' union all
select 'd','g' union all
select 'f','g'
) z
Думайте об этом как об отдельных игроках, которых нужно распределить на отборочный турнир первого раунда, и каждый игрок может сыграть только один раз в первом раунде. Но из-за доступности возможны не все комбинации. Это будет запрос для матчей первого дня, тот, кто не получит матч в первом раунде, будет помещен в пул для матчей второго дня. Так что наличие нескольких игроков без матчей в первый день - это не проблема, но тем не менее я стараюсь максимально увеличить количество игр в первый день.
Я думаю, мне нужно сделать что-то вроде объединения столбцов p1 p2 и каким-то образом сделать его эквивалентным p2 p1, а затем выбрать оттуда разные и снова разделить их.