日期:2014-05-16 浏览次数:20746 次
实例应用:
??? 查出相同编号的所有人的意见,没有填写意见时不显示。
??? 显示格式如下:
??? 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_NO
note
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
?
?
?