select FID , max(substr(sys_connect_by_path( FNAME, '+'), 2))  FNAME from (
   select FID ,  FNAME, colc, lead(colc) over(partition by FID order by colc) cold from (
   select FID ,  FNAME, row_number() over(order by FID ,  FNAME) colc from TABLE1) )
  start with cold is null
  connect by prior colc=cold
 group by FID ;

解决方案 »

  1.   

    上面要用","你用"+"了.
    select fid,max(substr(sys_connect_by_path(fname,','),2)) fname from(
    select fid,fname,row_number()over(order by fid,fname)+dense_rank(order by fid) as rn,
    min(fname)over(partition by fid) as mi from view1)
    start with fname=mi
    connect by prior rn=rn-1;
    group by fid
      

  2.   

    select fid,max(substr(sys_connect_by_path(fname,','),2)) fname from(
    select fid,fname,row_number()over(order by fid,fname)+dense_rank()over(order by fid) as rn,
    min(fname)over(partition by fid) as mi from view1)
    start with fname=mi
    connect by prior rn=rn-1;
    group by fid
      

  3.   

    我晕,居然还是错了.再来:
    create view view1 as
    select fid,max(substr(sys_connect_by_path(fname,','),2)) fname from(
    select fid,fname,row_number()over(order by fid,fname)+dense_rank()over(order by fid) as rn,
    min(fname)over(partition by fid) as mi from TABLE1)
    start with fname=mi
    connect by prior rn=rn-1;
    group by fid