oracle 对字符串进行合并的聚集函数的使用

来源:互联网 发布:制作价格表的软件 编辑:程序博客网 时间:2024/05/19 14:00

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








0 0
原创粉丝点击