【发布时间】:2011-08-20 21:56:50
【问题描述】:
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 分析功能?
【问题讨论】:
-
您不只需要使用
<而不是<>加入吗?
标签: sql oracle combinations