Есть ли в Oracle простой способ запросить уникальные комбинации n полей. У меня очень простое решение с двумя полями:
CREATE TABLE combinations AS
SELECT 1 AS n
FROM DUAL
UNION ALL
SELECT 2
FROM DUAL;
Запрос уникальных комбинаций:
SELECT LEAST(x.a, x.b),
GREATEST(x.a,x.b)
FROM (SELECT c1.n a,
c2.n b
FROM combinations c1
CROSS JOIN combinations c2
WHERE c1.n <> c2.n) x
GROUP BY LEAST(x.a, x.b), GREATEST(x.a,x.b);
Из этого запроса 1,2 и 2,1 считаются одинаковыми. К сожалению, это не работает для структуры из 3 полей (например, 1,2,3 следует рассматривать как 3,1,2, потому что порядок значений не имеет значения). Предлагают ли аналитические функции Oracle подходящее решение для этого вопроса? Не могли бы вы предложить какую-то конкретную аналитическую функцию Oracle?