新闻中心> 文章详情

南京OCA培训 Oracle中的wm_concat(column)函数使用

2015年10月28日

  Oracle中,使用wm_concat(column)函数,可以进行字段值合并,合并的字段默认通过逗号分隔,也可自行指定。如:

 

  wm_concat(col1);

 

  replace(wm_concat(col1),',','|');            --自定义分隔号,使用replace将逗号进行替换

 

  (wm_concat(col1||'|')并不是改变分隔号,结果为:col1|,col1|,.. 非col1|col2..)

 

  wm_concat(col1||'('||col2||'kg)'); --多个字段组合为一个串,结果为col1(col2kg),col1(col2kg)... 分隔号不替换,默认为逗号。南京OCA培训

 

  select no_id,wm_concat(name) from table1 group by no_id order by no_id;

 

  #results:  22---apple,yellow   33---red,fox

 

  select no_id,wm_concat(name||'('||weight||'kg)') from table1 group by no_id;南京OCA培训

 

  #results:  22---apple(12kg),yellow(43kg)  33---red(32kg),fox(11kg)

 

  --实际例子

 

  SELECT NO,role_remark,name,wm_concat(member_name) FROM (

 

  SELECT dense_rank() OVER(PARTITION BY c.name ORDER BY c.name,b.role_remark) AS NO, b.role_remark,a.group_id,a.member_id,a.member_name,SUBSTR(a.group_id,-3,3),c.name

 

  from T_BPM_GROUP_USER a,T_WFD_ROLE b,cqauth.company c

 

  WHERE b.id=SUBSTR(a.group_id,0,4) AND b.FLOWTYPE_NAME like '网络割接%' AND b.role_remark LIKE '%基站开通%'。南京OCP培训

 

  AND SUBSTR(a.group_id,-3,3)=c.companyid

 

  ) GROUP BY NO,role_remark,name;

 

  注:group by 需要包含select中的所有字段,除了计算或联接的字段外,如count(*)等。

 

  对于制造分组,可使用row_number()over 或 rank()over 或 dense_rank()over等分析函数,如上面的实际例子。分组后再按序号进行相关字段的合并。南京OCA培训


上一篇下一篇
按时发顺丰

技术交流群

Java大数据交流群560819979    加入
Python技术交流群595083299    加入
Oracle技术交流群595119011    加入
Web前端技术交流群604697610    加入
Huawei技术交流群482919361    加入
Redhat技术交流群587875348    加入
UI设计技术交流群511649801    加入
Cisco技术交流群596886705    加入
IT运维技术交流群605888381    加入