WMSYS.WM_CONCAT 函数的用法

 我们通过 10g 所提供的 WMSYS.WM_CONCAT 函数可以完成 行转列的效果

例子如下:

1.准备数据:

create table testtable (id number,name varchar2(30));
insert into testtable values(10,'ab');
insert into testtable values(10,'bc');
insert into testtable values(10,'cd');
insert into testtable values(20,'hi');
insert into testtable values(20,'ij');
insert into testtable values(20,'mn');

 查询下试试:

 

select * from testtable;

        ID NAME

        10 ab
        10 bc
        10 cd
        20 hi
        20 ij
        20 mn

 
 2.效果

2.1行转列的效果1(根据id分组)

select id,wmsys.wm_concat(name) name from testtable  group by id;

        ID NAME

       10 ab,bc,cd
        20 hi,ij,mn

 2.2行转列的效果2(在id,name排序基础上转换,这个好玩)

select id,wmsys.wm_concat(name) over (order by id,name) name from testtable;

        ID NAME
        10 ab
        10 ab,bc
        10 ab,bc,cd
        20 ab,bc,cd,hi
        20 ab,bc,cd,hi,ij
        20 ab,bc,cd,hi,ij,mn

2.3行转列的效果3(根据id字段拆分)

select id,wmsys.wm_concat(name) over (partition by id) name from testtable;

        ID NAME
        10 ab,bc,cd
        10 ab,bc,cd
        10 ab,bc,cd
        20 hi,ij,mn
        20 hi,ij,mn
        20 hi,ij,mn

 2.4行转列的效果4(根据id,name字段拆分)

select id,wmsys.wm_concat(name) over (partition by id,name) name from testtable;

        ID NAME
        10 ab
        10 bc
        10 cd
        20 hi
        20 ij
        20 mn

 现在这个效果和不拆一样,不过如果有另外多个字段,就会有效果的哦

 

最后,希望开发的童鞋们可以用的上哈,提高开发效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值