实现字段合并

使用oraclewm_concat(column)函数实现字段合并
如:shopping
 -----------------------------------------
 u_id       goods            num
________________________________________
 1             苹果               2
 2             梨子               5
 1             西瓜               4
 3             葡萄               1
 3             香蕉               1
 1             橘子               3
 ========================================
 想要的结果为:
 ----------------------------------------
 u_id          goods_sum
 ________________________________________
 1              苹果,西瓜,橘子
 2              梨子
 3              葡萄,香蕉
 ----------------------------------------
select u_id, wmsys.wm_concat(goods) goods_sum   from shopping   group by u_id  
解析:使用wm_concat之后,各个值之间用逗号自动隔开,可以结合replace函数把逗号换成其他符号,如:
select replace(wm_concat(goods),',','|') from shopping;
与||合用的情况
想要的结果:
----------------------------------------
 u_id          goods_sum
 _________________________________________
 1             苹果(2斤),西瓜(4斤),橘子(3斤)
 2             梨子(5斤)
 3             葡萄(1斤),香蕉(1斤)
----------------------------------------
使用oracle wm_concat(column)函数实现:
select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum from shopping group by u_id

这里有关于连接符 || 的介绍

扩展
案例:我要写一个视图,类似
create or replace view as select 字段1, 字段2...字段50 from tablename
基表有50多个字段,要是靠手工写太麻烦了,
有没有什么简便的方法? 
当然有了,看我如果应用wm_concat来让这个需求变简单
select 'create or replace view as select '|| wm_concat(column_name) || ' from dept ' from user_tab_columns where table_name='DEPT';

 

更多内容,请关注公众号:程序员高手之路

在公众号回复:Oracle资源   即可免费获取Oracle视频教程!

Oracle中的wm_concat(column)函数_公众号

Oracle中的wm_concat(column)函数_函数实现_02