下面是这个SQL语句及其查询结果:  SELECT ibkibrno,IBKBKNO,IBKSUPBK,orgname FROM test1 WHERE   
   IBKNAME is not null
    START WITH IBKBKNO ='35843' CONNECT BY IBKBKNO=PRIOR IBKSUPBK order by IBKBKNO------------------------------------------------
显示结果:
 ibkibrno IBKBKNO IBKSUPBK orgname
1 1 99999 总部                                               
23 23 1 四川省xx                                                  
23 15040 23 成都红星中路分公司                                            
23 15010 15040 金堂分部                                                    
23 35843 15010 金堂分部开发部  
其中:
    IBKBKNO -- 管辖机构号
    IBKSUPBK --上级机构号
    orgname--机构名称
上面是根据某一个IBKBKNO 递归的查询结果。现在要求能根据某一个IBKBKNO查询出所在的所有上级机构,
放在一个字段里面显示。结果形如:总部-->四川省xx-->成都红星中路分公司-->金堂分部
                                        

解决方案 »

  1.   

    总部-->四川省xx-->成都红星中路分公司-->金堂分部
    只要名字,不要其他的id号了吗?
      

  2.   


     with t_test as
     (
     select 1 ibkibrno, 1 ibkbkno, 99999 ibksupbk,'总部' orgname from dual union all
     select 23, 23, 1,'四川省xx' from dual union all
     select 23, 15040, 23,'成都红星中路分公司' from dual union all
     select 23, 15010, 15040,'金堂分部' from dual union all
     select 23, 35843, 15010,'金堂分部开发部' from dual
     )--以上为提供数据的语句
     SELECT replace(MAX(orgname),',','-->')
     FROM (SELECT wm_concat(orgname) over(ORDER BY lvl DESC) orgname
               FROM (SELECT t.*, LEVEL lvl
                       FROM t_test t
                       START WITH ibkbkno = 35843
                     CONNECT BY PRIOR ibksupbk = ibkbkno
                      ORDER BY LEVEL DESC))REPLACE(MAX(ORGNAME),',','-->')
    ----------------------------------------------------------------------------------------------
    总部-->四川省xx-->成都红星中路分公司-->金堂分部-->金堂分部开发部
      

  3.   

    单纯的sql不好弄 用函数
      

  4.   

     wm_concat(orgname)  10g以上才能用
      

  5.   

     SELECT IBKIBRNO, IBKBKNO, IBKSUPBK, ORGNAME
       FROM TEST1
      WHERE IBKNAME IS NOT NULL
      START WITH IBKBKNO = '35843'
    CONNECT BY IBKBKNO = PRIOR IBKSUPBK
      ORDER BY IBKBKNO这样出来的是个结果集合,只能放到过程处理语句中(如函数,过程),用游标或数组包装结果集后,
    然后根据条件单条处理这些结果(也就是说拼装成你需要的输出台数)
      

  6.   

    楼主试试 
    SELECT ibkibrno,IBKBKNO,IBKSUPBK,orgname,sys_connent_by_path(orgname,'-->') FROM test1 WHERE   
      IBKNAME is not null
        START WITH IBKBKNO ='35843' CONNECT BY IBKBKNO=PRIOR IBKSUPBK order by IBKBKNO