玖叶教程网

前端编程开发入门

oracle中行合并函数wm_concat的使用

使用背景

笔者长期从事于各种数据应用查询和抽取工作,为各种数据服务提供技术支撑,在笔者的过程经历中,觉得比较头痛的就是有关数据的需要是将一个1对多关系的两类信息整合到excel的一行记录中,针对这种需求,笔者找到了一个oracle所提供的一种函数来满足此要求,它就是wm_concat

基本使用方法

假设有表如下:

原始表

而我们想要的结果为:

目标结果集

那么我们要根据原始表得到目标结果集的话,即可以通过wm_concat函数,语句如下:

select u_id,wmsys.wm_concat(goods)
from 原始表
group by u_id

此外wm_concat函数中还可以传入多个参数,使用也很简单

局限性

wm_concat函数可以满足日常基本简单的1对多关系合并成一行的操作,但是局限性也是很明显的,就是在多的关系的拼接过程中,不可以超出oracle本身的字符串的长度限制,否则就会出错。各位大神如果有更好的替代办法也可以指点一二。

类似函数

与wm_concat类似的还有聚合函数LISTAGG,wm_concat是oracle10里面才有的,而listagg是11才出来的,大家有兴趣也可以试试喔。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言