Ссылка на исходную таблицу во многом зависит от того, что в этой таблице является причиной заказа.Допустим, у вас есть поле даты или поле последовательности, и вы хотите наименьшее значение ...
В этом примере я предполагаю, что seqField уникален по строке
Тогда это выглядит так:*
--drop table #test
SELECT 1 as seqField, 1 as id1, 2 as id2
INTO #test
UNION ALL
SELECT 2,2,1
UNION ALL
SELECT 3,3,4
UNION ALL
SELECT 4,4,1
UNION ALL
SELECT 5,4,3
UNION ALL
SELECT 6,1,4
UNION ALL
SELECT 7,10,20;
WITH norm AS
(
SELECT CASE WHEN id1 > id2 THEN id1 ELSE id2 END as a,
CASE WHEN id1 < id2 THEN id1 ELSE id2 END as b, *
FROM #test
), setList AS
(
SELECT DISTINCT a, b, min(seqField) as s
FROM norm
GROUP BY a, b
)
SELECT #test.*
FROM #test
JOIN setList ON #test.seqField = setList.s
Это дает
seq id1 id2
1 1 2
3 3 4
4 4 1
7 10 20
Как указывает sqlchan, seqField можно заменить на %%physloc%%
, если у вас нет существующего столбца для использования.