SQL и уникальные комбинации из n столбцов

Есть ли в 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?

7
задан Cœur 2 December 2019 в 11:23
поделиться