之前写了一个组合问题,想想还是把排列的情况也考虑下。
表结构 t_data
期望结果
一共3列数据,比如选取2列时,(C1C2)(C2C1)这两个排列值为2,因为只有2行满足c1、c2都不为空(第1、3行)
总体思路:
构造3列的排列,然后和实际数据匹配
第一步:构造3列的排列
SQL> select regexp_substr(csv.csvdata, '[^,]+', 1, level) chr
2 from (select '1,2,3' as csvdata from dual) csv
3 connect by level <= 3
4 /
CHR
----------
1
2
3
SQL> create table t_Permutation as
2 select regexp_substr(csv.csvdata, '[^,]+', 1, level) chr