T-SQL. Выборка уникальных значений по двум полям

Всем привет! Есть таблица вида

From To
Moscow SPB
SPB Moscow
Tomsk Bryansk
Tomsk Pskov
Bryansk Tomsk

Мне нужно выбрать все уникальные значения в обе стороны (поле Moscow => SPB равно SPB => Moscow), т.е. чтобы на выходе получился такой результат:

From To
Moscow SPB
Tomsk Bryansk
Tomsk Pskov

Помогите, пожалуйста, 2-й день бьюсь. Пробовал так:

select * 
from
(
    select distinct ROW_NUMBER() OVER(PARTITION BY t2.[From], t2.[To] 
    ORDER BY t2.id) rn, t1.[From], t1.[To]
    from table t1
    join table t2 on t2.[from] = t1.[To]
        and t2.[To]=t1.[From]
) t
where rn = 2

Ответы (1 шт):

Автор решения: i-one

Можно так:

DECLARE @table TABLE ([From] nvarchar(50), [To] nvarchar(50));
INSERT INTO @table
VALUES
    (N'Moscow', N'SPB'),
    (N'SPB', N'Moscow'),
    (N'Tomsk', N'Bryansk'),
    (N'Tomsk', N'Pskov'),
    (N'Bryansk', N'Tomsk');

WITH TwoWay AS (
    SELECT [From], [To]
    FROM @table
    UNION 
    SELECT [To], [From]
    FROM @table
),
OneWay AS (
    SELECT [From], [To]
    FROM TwoWay
    WHERE [From] < [To]
)
SELECT *
FROM OneWay;
→ Ссылка