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

本文详细介绍了如何使用oraclewm_concat(column)函数在Oracle数据库中进行字段合并,包括具体实现方法和示例数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值