我有一个库房表,内容如下:
编号   库位编号     名称      上级库位
1    1000        A库房      NULL
2    1000-1001     A库位     1000
3    1000-1001-1002  A货位     1000-1001现在我在库存表中存入的库位编号为1000-1001-1002,我想根据这个值得到它的名称
格式为(A库房-A库位-A货位),现在是三级,有可能是一级或更多,如何写sql取出
它的名称来?
谢谢各位啦,我很急!!!

解决方案 »

  1.   

    用存储过程吧,思路: for i in 1..length(str) loop
      

  2.   

    SQL> create table t(id number,kfbh varchar2(100),name varchar2(100),parentbh varchar2(100));表已创建。SQL> insert into t values(1,'1000','A库房',null);已创建 1 行。SQL> insert into t values(2,'1000-1001','A库位','1000');已创建 1 行。SQL> insert into t values(3,'1000-1001-1002','A货位','1000-1001');已创建 1 行。SQL> commit;提交完成。SQL> spool off;select newname
      from (select level,(substr(sys_connect_by_path(name, '-'), 2)) newname, t.*
              from t
            connect by prior kfbh = parentbh
            order by level desc
              )
     where name = 'A货位' and rownum=1
      

  3.   

    谢谢,但是这样会出来好多条重复的,我只要级别最大那一条,如何在正合一下,因为我想做成一个视图,以后每次都为查这个视图,不想用ROWNUM=1这个条件,因为有可能是多张表联合查询