select 上级企业代码,本企业代码,级次 from V_封面信息IUFO order by 级次0 0101 1
0101 0201 2
0101 0101 2
0201 0212 3
0201 0202 3
0201 0210 3
0201 0215 3
0201 0201 3
0201 0207 3
0201 0208 3
0201 0204 3
0201 0213 3
0201 0204 3
0201 0203 3
0201 0206 3
0201 0211 3
0201 0214 3
0101 0101 3
0201 0216 3想转换层
一级   二级    三级
0101   0101    0101
0101   0201    0202
0101   0201    0203
……后边可能还会有四级,五级的怎么利用oracle 的函数 写出这样的查询呢??最好能一个查询解决问题,谢谢大侠们啦

解决方案 »

  1.   

    层数不固定的话还是用动态sql生成吧.
      

  2.   

    substr+sys_connect_by_path 怎么使用呢??能具体点儿吗??本人初使用Oracle ,很多不懂,还望多多指教
      

  3.   


    --如:刚才的一个帖子数据
    WITH tab AS(
    SELECT '001' ID,'1.开始' content, 1 seq FROM dual
    UNION all 
    SELECT '001', '2.发展', 2 FROM dual
    UNION all 
    SELECT '001', '3.高潮', 3 FROM dual
    UNION all 
    SELECT '001', '4.结局', 4 FROM dual
    UNION ALL
    SELECT '002', '1.开始', 1  FROM dual  
    UNION all 
    SELECT '002', '2.发展', 2 FROM dual
    UNION all 
    SELECT '002', '3.高潮', 3 FROM dual
    UNION all 
    SELECT '002', '4.结局', 4 FROM dual
    )
    SELECT id,Max(SubStr(sys_connect_by_path(content,','),2))内容 FROM tab
    START WITH seq=1
    CONNECT BY PRIOR seq=seq-1
    GROUP BY idID 内容
    -----------------------------------------------------------
    001 1.开始,2.发展,3,高潮,4.结局
    002 1.开始,2.发展,3,高潮,4.结局
      

  4.   

    貌似需求不一样,贴错了,sorry,下班吃饭去了
      

  5.   

    SELECT a.id,b.id,c.id
    FROM table1 a,table2 b,table3 c
    WHERE a.jici=1 AND b.jici=2 AND c.jici=3
      AND a.id=b.fatherid AND b.id=c.fatherid
      

  6.   

    不过,我稍稍做了修改,也许会更好吧
    SELECT a.本企业代码 一级单位,b.本企业代码 二级单位,c.本企业代码 三级单位,d.本企业代码 四级单位
    FROM V_封面信息IUFO a
    left join V_封面信息IUFO b on a.本企业代码=b.上级企业代码 and b.级次=2 
    left join V_封面信息IUFO c on b.本企业代码=c.上级企业代码 AND c.级次=3
    left join V_封面信息IUFO d on c.本企业代码=d.上级企业代码 and d.级次 = 4
    WHERE  a.级次=1
    order by 一级单位,二级单位,三级单位
      

  7.   

    如果是不固定的层级,是不是要取出最大层级,然后动态拼SQL啊?