
create table users (name char(2),value char(1),id number); |
insert into users values('甲','a',1); |
insert into users values('乙','b',2); |
insert into users values('丙','c',3); |
insert into users values('丁','d',4); |
commit; |
--全组合 |
select a.value||b.value result from test_j a,test_j b |
where a.rowid<>b.rowid and a.value <b.value |
order by result; |
--取2个元素组合 |
select replace (a.combo, '#') as "组合" |
from |
(select id,sys_connect_by_path (value, '#') || '#' combo |
from (select 1 as id,value,1 as ctrl from users) |
connect by prior id = id and value > prior value ) a, |
(select 1 as id,value,1 as ctrl from users) b |
where b.id = a.id and instr (a.combo, '#' || b.value || '#') > 0 |
group by a.id, a.combo |
having sum (b.ctrl) = 2; |
--取3个元素组合 |
select replace (a.combo, '#') as "组合" |
from |
(select id,sys_connect_by_path (value, '#') || '#' combo |
from (select 1 as id,value,1 as ctrl from users) |
connect by prior id = id and value > prior value ) a, |
(select 1 as id,value,1 as ctrl from users) b |
where b.id = a.id and instr (a.combo, '#' || b.value || '#') > 0 |
group by a.id, a.combo |
having sum (b.ctrl) = 3; |
--取4个元素组合 |
select replace (a.combo, '#') as "组合" |
from |
(select id,sys_connect_by_path (value, '#') || '#' combo |
from (select 1 as id,value,1 as ctrl from users) |
connect by prior id = id and value > prior value ) a, |
(select 1 as id,value,1 as ctrl from users) b |
where b.id = a.id and instr (a.combo, '#' || b.value || '#') > 0 |
group by a.id, a.combo |
having sum (b.ctrl) = 4; |




by: 发表于:2017-09-22 09:43:25 顶(0) | 踩(0) 回复
??
回复评论