17,377
社区成员
发帖
与我相关
我的任务
分享
[思路一:
with tmp as (
select 'PartA' PartNum, '甲' step, 1 ording from dual union all
select 'PartA' PartNum, '乙' step, 2 ording from dual union all
select 'PartA' PartNum, '丙' step, 3 ording from dual union all
select 'PartA' PartNum, '丁' step, 4 ording from dual union all
select 'PartB' PartNum, '甲' step, 1 ording from dual union all
select 'PartB' PartNum, '丙' step, 2 ording from dual union all
select 'PartB' PartNum, '乙' step, 3 ording from dual
)
select *
from(select PartNum,
listagg(step) within group(order by ording) tt
from tmp
group by PartNum)t
where t.tt like '%乙丙%';
思路二:
with tmp as (
select 'PartA' PartNum, '甲' step, 1 ording from dual union all
select 'PartA' PartNum, '乙' step, 2 ording from dual union all
select 'PartA' PartNum, '丙' step, 3 ording from dual union all
select 'PartA' PartNum, '丁' step, 4 ording from dual union all
select 'PartB' PartNum, '甲' step, 1 ording from dual union all
select 'PartB' PartNum, '丙' step, 2 ording from dual union all
select 'PartB' PartNum, '乙' step, 3 ording from dual
)
select PartNum
from (select PartNum,
listagg(step) within group (order by ording) l
from tmp
where step in ('乙','丙')
group by PartNum)
where l in '乙丙']
with tab1 as (
select 'a' num, 'jia' typ, 1 ord from dual union all
select 'a' num, 'yi' typ, 2 ord from dual union all
select 'a' num, 'bing' typ, 3 ord from dual union all
select 'a' num, 'ding' typ, 4 ord from dual union all
select 'b' num, 'jia' typ, 1 ord from dual union all
select 'b' num, 'bing' typ, 2 ord from dual union all
select 'b' num, 'yi' typ, 3 ord from dual union all
select 'c' num, 'jia' typ, 1 ord from dual union all
select 'c' num, 'bing' typ, 2 ord from dual
)
select t1.num
from tab1 t1, tab1 t2
where 1 = 1
and t1.num = t2.num
and t1.typ = decode(t2.typ, 'yi', 'bing', '')
and t1.ord > t2.ord
;