oracle 对字符串进行合并的聚集函数的使用
2014-07-29 14:24
330 查看
oracle数据库中,使用wm_concat(column)函数,可以进行字段合并,下文对该功能的实现方法作了详细的介绍,供您参考学习。
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并,如果您对oracle wm_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 葡萄,香蕉
---------------------------------
想要的结果2:
--------------------------------
u_id goods_sum
____________________
1 苹果(2斤),西瓜(4斤),橘子(3斤)
2 梨子(5斤)
3 葡萄(1斤),香蕉(1斤)
---------------------------------
使用oracle wm_concat(column)函数实现:
Listagg 函数用法具体介绍:http://blog.sina.com.cn/s/blog_4cef5c7b01016efp.html
MS SQL 实现方式:
MS SQL 需要 使用FOR XML PATH进行转换。
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即, group by id, 求 value 的和(字符串相加)
oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并,如果您对oracle wm_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 葡萄,香蕉
---------------------------------
想要的结果2:
--------------------------------
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 4000 group by u_id或者采用Oracle Listagg 函数。
Select a.u_id, listagg(a.g, ',') within Group(Order By a.u_id) As s From (Select t.u_id, t.goods || '(' || t.num || ')' As g From test_table t) a Group By a.u_id;
Listagg 函数用法具体介绍:http://blog.sina.com.cn/s/blog_4cef5c7b01016efp.html
MS SQL 实现方式:
MS SQL 需要 使用FOR XML PATH进行转换。
id value
----- ------
1 aa
1 bb
2 aaa
2 bbb
2 ccc
需要得到结果:
id values
------ -----------
1 aa,bb
2 aaa,bbb,ccc
即, group by id, 求 value 的和(字符串相加)
WITH t1 AS ( SELECT '1' AS id , 'aa' AS value UNION ALL SELECT '1' AS id , 'bb' AS value UNION ALL SELECT '2' AS id , 'aaa' AS value UNION ALL SELECT '2' AS id , 'bbb' AS value UNION ALL SELECT '2' AS id , 'ccc' AS value UNION ALL SELECT '1' AS id , 'abc' AS value ) -- SELECT ',' + RTRIM(value) --AS value -- FROM t1 --FOR --XML AUTO; -- XML PATH('') SELECT id , STUFF(( SELECT ',' + RTRIM(value) FROM t1 WHERE id = a.id FOR XML PATH('') ), 1, 1, '') AS [values] FROM ( SELECT DISTINCT id FROM t1 ) a
相关文章推荐
- ORACLE使用UTL_URL包对字符串进行URL编码解码
- 使用自定义聚集函数来实现分组合并字符串
- (转载)使用自定义聚集函数来实现分组合并字符串
- oracle的常用函数 instr() 和substr()函数 博客分类: oracle 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。 在一个
- Oracle使用SQL语句进行递归查询
- Path.Combine (合并两个路径字符串)方法的一些使用细节
- 对字符串数组进行排序,在冒泡法排序中使用compareTo()方法确定排序的顺序。
- 使用cmd命令对txt文件进行排序合并(摘)
- 使用Java对字符串进行MD5加密以及验证
- (转载)使用自定义聚集函数来实现分组合并字符串
- 对字符串的“sum”——在Oracle中自定义聚集函数的例子
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- oracle服务器是9i,尝试使用10g的客户端进行导出出现错误
- 如何使用Oracle的Decode函数进行多值判断
- ORACLE数据导出与导入专题(3)——使用exp/imp工具进行数据导入导出
- 自己写的使用聚集函数实现多行字串合并处理
- 字符串根据多个字符进行分割的一种方法(使用split而不是regex.split更不是replace)
- 使用 ADO.NET 和 Oracle 进行高级数据访问
- HowTo:如何使用Oracle的Decode函数进行多值判断
- Oracle SQLPlus 一些使用经验记录(设置环境变量和字符串比较)