在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分析函数?
<
而不是<>
来进行连接吗? - Martin Smith