在oracle中
实现如下
有下表: 单位名称 收费类别 
1 a 
1 b 
1 d 
3 a 
3 b 
3 c 
要求查询结果显示如下 单位名称 收费类别 
1 a,b,d 
3 a ,b,c 
这个语句用select怎么写?

解决方案 »

  1.   

    insert into t2 values('1','a');
    insert into t2 values('1','b');
    insert into t2 values('1','d');
    insert into t2 values('3','a');
    insert into t2 values('3','b');
    insert into t2 values('3','c');
    select * from t2;
    select a,substr(max(sys_connect_by_path(b,',')),2) as b from (
    select a,b,row_number()over(partition by a order by b) as rn from t2
    )
    start with rn=1
    connect by rn-1=prior rn and a=prior a
    group by a;
    将多行中的列连接,用 sys_connect_by_path
      

  2.   

    sys_connect_by_pathstart with ...connect by 顶
    学习了
      

  3.   


    赞一个,可以用这个方法可以参看我学习sys_connect_by_path的一个例子
    http://blog.csdn.net/inthirties/archive/2009/07/08/4331685.aspx
      

  4.   

    oracle10以后有 wmsys.wm_concat 更简单
      

  5.   

    10g版本以后的用 
    select col1,wmsys.wm_concat(col2) from tablename group by col1;