wm_concat实例应用

实例应用:

    查出相同编号的所有人的意见,没有填写意见时不显示。

    显示格式如下:

    id         note

    001    张三:意见一

             李四:意见二

    002    王五:意见一

 

    SQL如下:

   

 

create table T002
(
    APPROVAL_NO varchar2(200),
    APPROVAL_NAME varchar2(200),
    APPROVAL_LINE_NOTE varchar2(200)
)

insert into T002 values('1001','张三','意见一');
insert into T002 values('1001','李四','意见二');
insert into T002 values('1001','王五','意见三');
insert into T002 values('1001','小六','意见四');
insert into T002 values('1001','小七',null);
insert into T002 values('1002','小七','意见一');
insert into T002 values('1002','小八',null);

 

 

select APPROVAL_NO,replace(wm_concat(APPROVAL_NAME || ':' || APPROVAL_LINE_NOTE ),',' ,chr(10) || chr(13)  ) as note
from T002
where APPROVAL_LINE_NOTE is not null
group by APPROVAL_NO;

 

  

 

   执行结果如下:

 

  

APPROVAL_NOnote
1001张三:意见一
李四:意见二
王五:意见三
小六:意见四
1002小七:意见一

 

 

实例2:

 

table1 有两个字段:
fld1, fld2,
10秒 19:00
15秒 21:00
15秒 20:30
15秒 20:00
30秒 22:00

写一个sql,取得如下结果集:
10秒(19:00)
15秒(20:00/20:30/21:00)
30秒(22:00)
要求15秒时,时间段按照20:00/20:30/21:00的顺序显示。

 

select sub.fld1,replace(wm_concat(sub.fld2),',','/') 
from (select fld1,fld2 from table1 order by fld1,fld2)sub
group by sub.fld1;

 

  

与wm_concat()操作相反的函数:

 

select regexp_substr('1001,1002,1003,1004,1005', '[^,]+', 1, level) from dual
connect by level <= 5

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值