用sys_connect_path 生成的数字型字符串,如何去掉重复的数字,并且按顺序排列 请高手指点,谢谢

解决方案 »

  1.   

    你先把重复数字去掉,并且排好序 再sys_connect_path嘛
      

  2.   


    --给你看个类似的例子
    WITH tb AS(
    select '张三' name, '工人' ms,1 flag from dual union all
    select '张三', '北京', 2 from dual union all
    select '李四', '党员', 1 from dual union all
    select '李四', '天津', 2 from dual union all
    select '李四', '塘沽', 3 from dual)
    select name,replace(substr(max(sys_connect_by_path(ms,';')),2),';','') newms
    from (select name,ms,rn,lead(rn) over(partition by name order by rn) rn1
          from (select name,ms,row_number() over(order by flag desc) rn --flag排序字段
                from tb)
          )
    start with rn1 is null
    connect by rn1=prior rn
    group by name
      

  3.   

    我这个是行列转换的 我不知道你表数据是什么样的  要的是什么样
    我就是告诉你  可以先把你要的数据取到 然后再sys_connect_path
      

  4.   

    如果Oracle版本10g的话,建议用wm_concat() + over()分析函数就能一步搞定