---恢复内容开始---
wm_concat函数
函数可以把列值以","号分隔起来,并显示成一行。
测试数据
SQL> create table test(id number,name varchar2(20));
SQL> insert into test values(1,\'a\');
SQL> insert into test values(1,\'b\');
SQL> insert into test values(1,\'c\');
SQL> insert into test values(2,\'d\');
SQL> insert into test values(2,\'e\');
SQL> commit;
效果1 : 行转列
SQL> select wm_concat(name) from test;
WM_CONCAT(NAME)
-------------------------------------------------------------------------
a,b,c,d,e
效果2: 把结果里的逗号替换成"|"
SQL> select replace(wm_concat(name),\',\',\'|\') from test;
REPLACE(WM_CONCAT(NAME),\',\',\'|\')
-----------------------------------------------------------------------
a|b|c|d|e
效果3:按ID分组合并name
SQL> select id,wm_concat(name) name from test group by id;
ID NAME
---------- ------------------------------
1 a,b,c
2 d,e
select * from table;
ID NAME
1 ab
1 bc
1 cd
2 hi
2 ij
2 mn
select id,wmsys.wm_concat(name) name from idtable group by id;
ID NAME
1 ab,bc,cd
2 hi,ij,mn
select id,wmsys.wm_concat(name) over (order by id) name from idtable;
ID NAME
1 ab,bc,cd
1 ab,bc,cd
1 ab,bc,cd
2 ab,bc,cd,hi,ij,mn
2 ab,bc,cd,hi,ij,mn
2 ab,bc,cd,hi,ij,mn
select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;
ID NAME
1 ab
1 ab,bc
1 ab,bc,cd
2 ab,bc,cd,hi
2 ab,bc,cd,hi,ij
2 ab,bc,cd,hi,ij,mn
select id,wmsys.wm_concat(name) over (partition by id) name from idtable;
ID NAME
1 ab,bc,cd
1 ab,bc,cd
1 ab,bc,cd
2 hi,ij,mn
2 hi,ij,mn
2 hi,ij,mn
select id,wmsys.wm_concat(name) over (partition by id,name) name from idtable;
ID NAME
1 ab
1 bc
1 cd
2 hi
2 ij
2 mn
---恢复内容结束---
wm_concat函数
函数可以把列值以","号分隔起来,并显示成一行。
测试数据
SQL> create table test(id number,name varchar2(20));
SQL> insert into test values(1,\'a\');
SQL> insert into test values(1,\'b\');
SQL> insert into test values(1,\'c\');
SQL> insert into test values(2,\'d\');
SQL> insert into test values(2,\'e\');
SQL> commit;
效果1 : 行转列
SQL> select wm_concat(name) from test;
WM_CONCAT(NAME)
-------------------------------------------------------------------------
a,b,c,d,e
效果2: 把结果里的逗号替换成"|"
SQL> select replace(wm_concat(name),\',\',\'|\') from test;
REPLACE(WM_CONCAT(NAME),\',\',\'|\')
-----------------------------------------------------------------------
a|b|c|d|e
效果3:按ID分组合并name
SQL> select id,wm_concat(name) name from test group by id;
ID NAME
---------- ------------------------------
1 a,b,c
2 d,e
select * from table;
ID NAME
1 ab
1 bc
1 cd
2 hi
2 ij
2 mn
select id,wmsys.wm_concat(name) name from idtable group by id;
ID NAME
1 ab,bc,cd
2 hi,ij,mn
select id,wmsys.wm_concat(name) over (order by id) name from idtable;
ID NAME
1 ab,bc,cd
1 ab,bc,cd
1 ab,bc,cd
2 ab,bc,cd,hi,ij,mn
2 ab,bc,cd,hi,ij,mn
2 ab,bc,cd,hi,ij,mn
select id,wmsys.wm_concat(name) over (order by id,name) name from idtable;
ID NAME
1 ab
1 ab,bc
1 ab,bc,cd
2 ab,bc,cd,hi
2 ab,bc,cd,hi,ij
2 ab,bc,cd,hi,ij,mn
select id,wmsys.wm_concat(name) over (partition by id) name from idtable;
ID NAME
1 ab,bc,cd
1 ab,bc,cd
1 ab,bc,cd
2 hi,ij,mn
2 hi,ij,mn
2 hi,ij,mn
select id,wmsys.wm_concat(name) over (partition by id,name) name from idtable;
ID NAME
1 ab
1 bc
1 cd
2 hi
2 ij
2 mn