如何将表中的一列的数据拼接起来. 两种情况:去重和不去重.比如表A,有一列A.
A
1
2
3
4
5
6想要得到1,2,3,4,5,6
不要使用FOR LOOP;
可否用一个语句写出! 谢谢!!!

解决方案 »

  1.   

    select wm_concat(A) from tb
      

  2.   

    wm_concat( ) 这个是什么啊?
    应该用PIVOT 了,不过这个是要11G才可用的. 
      

  3.   

    1、10g可以使用wm_concat
    2、10g以下可以使用sys_connect_by_path,但是较麻烦,如:
    select max(ltrim(sys_connect_by_path(a, ','), ',')) a
      from (select a, rownum rn from a)
    connect by prior rn = rn - 1
     start with rn = 1
    3、还可以自定义一个类似函数来解决
      

  4.   

    select max(ltrim(sys_connect_by_path(a, ','), ',')) a
      from (select a, rownum rn from a)
    connect by prior rn = rn - 1
     start with rn = 1这个可以!不知道性能如何? 和FOR LOOP 比较呢!? 
      

  5.   

    PIVOT   10g里没有这个。
      

  6.   

    select WMSYS.WM_CONCAT(A) from A
      

  7.   

    我比较喜欢10g的wm_concat函数,简单高效
    wm_concat([distinct ]a)