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)函数实现:
select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum
from shopping
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