类似于这样的,建设方、施工方,然后施工方转包给了另外一个施工方,这个时候总包也成了建设方的意思,可能存在多个转包,现在的需求是能否罗列出总包a 分包 b 合同名称 合同金额  f g h以此类推然后比如说B也转包给了C和D 如何罗列出 a 的总包是谁  这些总包又分包给了谁,谁最后干了这个工程,每个环节都是多少金额?

解决方案 »

  1.   

    [quote=引用 1 楼 weixin_45069503 的回复:]
    上面的图除了排序没看出区别,原表什么样,需要结果什么样?原表就是excel的表样,我想导入oracle数据库中。需要的表格都行啊,只要能展示出来就行  如果有那种 树形图就好 
      

  2.   

    这样?
    select 建设方,施工方,lpad(施工方,length(施工方)+level-1,'-') from sc_module
    start with 建设方=A
    connect by prior 施工方=建设方 
    order siblings by 施工方
      

  3.   

    提示ipad 标识无效,然后施工方高亮
      

  4.   

    3楼写的是lpad, 是L的小写,不是i
      

  5.   

    大神,我加入合同金额的话就报错了
    大神,我按照您的写法操作成功!!!但是有个新问题,我现在需要整理出两列数据,一个是施工方id 一个是建设方id,来满足后续做框架图的数据结构,遇到一个难题。如何给他们分层级,我举例说明:比如a企业是建设方 那我就写 施工方id为1 建设方id 就为空 保证a企业是建设方 比如a 把工程分包给b企业  那b企业的施工方就是11 建设方id为1 来实现这种层级的效果,现在问题是 如果 b企业把同一个工程同时分包给3个企业 e f g 如何通过函数或者sql实现给e f g 分别赋值呢? 
    最后结果是 
    施工方id     建设方id  建设方名称
    1                                        a企业
    11                     1               b企业
    111                  11              e企业
    112                  11              f企业
    113                  11              g企业   
      

  6.   

    SELECT JSF,SGF ,rnum,1||sys_connect_by_path(rnum,'/')
    FROM (select JSF,SGF,row_number() over(partition by jsf order by sgf) rnum
    from table_test)
    START WITH JSF='A'
    connect by prior SGF=JSF 
    order siblings by SGF
    这样?如果不要/ replace掉