日期:2014-05-17  浏览次数:21169 次

WMSYS.WM_CONCAT 函数的详细说明,哪位高人晓得?
WMSYS.WM_CONCAT 这个函数,我翻了一下手头上oracle 10g 的官方文档没找到。

在国内搜索,搜到内容差不多,信息量最多不外乎是如下结果:http://blog.csdn.net/wh62592855/archive/2009/10/29/4745581.aspx 。


但是我在本机oracle10g r2 上运行,用over (partition by id) ,系统提示不能使用。

有没有谁关于WMSYS.WM_CONCAT的详细介绍啊,英文也可以。

PS:
在国外的一个帖子中,看到有说ListAgg函数更好,可以定义连接字符串内部顺序,有谁用过吗?我的oracle版本好像没这个函数

------解决方案--------------------
给你个我整理的例子,希望对你有帮助:

SQL code
 
SQL> create table IDTABLE
2 (
3  id number,
4  val varchar2(20)
5 )
6 ;

Table created

SQL>
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'abc');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'abc');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'def');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'def');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'ghi');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'jkl');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'mno');

1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'mno');

1 row inserted

SQL> select id,val from idtable;

    ID VAL
---------- --------------------
    10 abc
    10 abc
    10 def
    10 def
    20 ghi
    20 jkl
    20 mno
    20 mno

8 rows selected

SQL> commit;

Commit complete

SQL>
SQL> SELECT ID, WMSYS.WM_CONCAT(VAL) AS ENAMES
2  FROM IDTABLE
3  GROUP BY ID;

    ID ENAMES
---------- --------------------------------------------
    10 abc,abc,def,def
    20 ghi,jkl,mno,mno

SQL>
SQL> SELECT ID, WMSYS.WM_CONCAT(DISTINCT VAL) AS ENAMES
2  FROM IDTABLE
3  GROUP BY ID
4  ORDER BY ID;

    ID ENAMES
---------- --------------------------------------------
    10 abc,def
    20 ghi,jkl,mno

SQL>
SQL> SELECT ID, VAL, WMSYS.WM_CONCAT(VAL) OVER(PARTITION BY ID) AS ENAMES
2  FROM IDTABLE
3  ORDER BY ID;

    ID VAL        ENAMES
---------- -------------------- --------------------------------------------
    10 abc        abc,abc,def,def
    10 abc        abc,abc,def,def
    10 def        abc,abc,def,def
    10 def        abc,abc,def,def
    20 ghi        ghi,jkl,mno,mno
    20 jkl        ghi,jkl,mno,mno
    20 mno        ghi,jkl,mno,mno
    20 mno        ghi,jkl,mno,mno

8 rows selected

SQL>
SQL> SELECT ID, VAL, WMSYS.WM_CONCAT(VAL) OVER(ORDER BY ID, VAL) AS ENAMES
2  FROM IDTABLE
3  ORDER BY ID;

    ID VAL        ENAMES
---------- -------------------- --------------------------------------------