读书人

WMSYS.WM_CONCAT 函数的详细说明哪位

发布时间: 2012-03-17 19:06:28 作者: rapoo

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
---------- -------------------- --------------------------------------------


10 abc abc,abc
10 abc abc,abc
10 def abc,abc,def,def
10 def abc,abc,def,def
20 ghi abc,abc,def,def,ghi
20 jkl abc,abc,def,def,ghi,jkl
20 mno abc,abc,def,def,ghi,jkl,mno,mno
20 mno abc,abc,def,def,ghi,jkl,mno,mno

8 rows selected


[解决办法]
http://www.itpub.net/thread-1332147-1-1.html#
[解决办法]
探讨
WMSYS.WM_CONCAT 这个函数,我翻了一下手头上oracle 10g 的官方文档没找到。

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


但是我在本机oracle10g r2 上运行,用over (partition by id) ,……

读书人网 >oracle

热点推荐