一个表,有两列(A,B),表中的数据如下如下:
A B
1 a
1 b
2 a
2 c
我想通过sql或存储过程查出的结果如下面的方式:不知道该如何操作?
A B
1 a,b
2 a,c

解决方案 »

  1.   


    select A,wmsys.wm_concat(B) B from table_name;
      

  2.   

    10g以下只能老老实实用connect by递归
      

  3.   


    貌似少了group by语句,修改如下:select A,wmsys.wm_concat(B) B from table_name Group By a;
      

  4.   

    我的数据库里没有wmsys.wm_concat这个函数
      

  5.   

    oracle特有的sql语句以前写过,逻辑很麻烦,后来不用了,直接写存储过程,楼主搜一下就有了或者等哪位有空贴一下吧
      

  6.   

    select A, substr(max(sys_connect_by_path(B,',')),2) as value 
      from ( 
        select A, B, row_number()over(partition by A order by B) as rn 
          from test
          ) 
      start with rn = 1 
    connect by rn - 1 = prior rn and A= prior A
      group by A;  
      

  7.   

    这里有个用sys_connect_by_path拼字符的例子。http://blog.csdn.net/inthirties/archive/2009/07/08/4331685.aspx