我有一个包含多个列的 Oracle 表,其中一些列填充了一个变量,有大量可能的变量,下面的示例并不详尽。
ID Col1 Col2 Col3 Col4 Col5 Col6
-------------------------------------
1 X2 B2
2 C3 D1 R4
3 B2 X2
4 E4 T1 W2
5 X2 B2
6 R4 D1
7 D1 R4 C3
我需要确定不同组合的数量,其中上例中的第 1 行、第 3 行和第 5 行被认为是相同的组合,第 2 行和第 7 行也被认为是相同的。所以想要的结果看起来像:
Col1 Col2 Col3 Col4 Col5 Col6 Count(*)
------------------------------------------------
B2 X2 3
C3 D1 R4 2
E4 T1 W2 1
D1 R4 1
但如果我使用这个:
SELECT Col1, Col2, Col3, Col4, Col5, Col6, Count(*)
FROM MyTable
GROUP BY Col1, Col2, Col3, Col4, Col5, Col6
ORDER BY Count(*) DESC
然后我的数据中的第 3 行被认为是唯一的。但是,它与第 1 行和第 5 行具有相同的组合。第 2 行和第 7 行也不被认为是相同的,结果是:
Col1 Col2 Col3 Col4 Col5 Col6 Count(*)
------------------------------------------------
X2 B2 2
C3 D1 R4 1
B2 X2 1
E4 T1 W2 1
R4 D1 1
D1 R4 C3 1
看起来我需要在比较它们之前对 col 变量进行排序。但是,对于 Oracle 中多达 20 列数据的大型记录集(超过 300 万条记录),是否有一个优雅的解决方案?