读书人

有条件获取数据函数解决办法

发布时间: 2012-09-14 23:00:49 作者: rapoo

有条件获取数据函数
有如下一张表:(代码如下),现在想得到的效果是:
如果我现在表中存在0101,则连Acode等于01的数据一同显示出来(表中允许存在01的数据但不一定有下级数据,也就是用它的Acode值作为Apcode),如果没有,则连Acode等于01的也不显示。

create table tmpa as
select '01' as Acode ,'分组1' as Aname,'' as Apcode from dual;
union all
select '0101' as Acode ,'A1' as Aname,'01' as Apcode from dual;
union all
select '0102' as Acode ,'A2' as Aname,'01' as Apcode from dual;
union all
select '02' as Acode ,'分组2' as Aname,'' as Apcode from dual;
union all
select '0201' as Acode ,'B1' as Aname,'02' as Apcode from dual;
union all
select '0202' as Acode ,'B2' as Aname,'02' as Apcode from dual;
union all
select '0203' as Acode ,'B3' as Aname,'02' as Apcode from dual;
union all
select '03' as Acode ,'分组2' as Aname,'' as Apcode from dual;
union all
select '0301' as Acode ,'C1' as Aname,'03' as Apcode from dual;
union all
select '0302' as Acode ,'C2' as Aname,'03' as Apcode from dual;
union all
select '0303' as Acode ,'C3' as Aname,'03' as Apcode from dual;



[解决办法]

SQL code
--本人想的不知道是你的意思不select Acode,Aname,Apcode from tmpawhere Acode='0101' and instr(Acode,Apcode)>0
[解决办法]
还是没看明白LZ的要求,你执行下这个查询
select acode,aname,apcode,level from tmpa start with acode ='0301'
connect by prior apcode=acode;

看看是不是你要的结果。

读书人网 >oracle

热点推荐