读书人

语句多谢

发布时间: 2013-03-26 09:54:34 作者: rapoo

求一个语句,谢谢


--建表
create table tmp.t_table
(id number(10),
t_result varchar2(20)
);

--数据
insert into tmp.t_table values (1,'A');
insert into tmp.t_table values (1,'B');
insert into tmp.t_table values (1,'C');
insert into tmp.t_table values (1,'D');
insert into tmp.t_table values (2,'A');
insert into tmp.t_table values (3,'A');
insert into tmp.t_table values (3,'B');
insert into tmp.t_table values (3,'C');
insert into tmp.t_table values (3,'D');
insert into tmp.t_table values (3,'E');
insert into tmp.t_table values (4,'F');
insert into tmp.t_table values (4,'G');


--想要的结果
id,tot_result
1,A|B|C|D
2,A
3,A|B|C|D|E
4,F|G


目前能想到的方式是做loop,对于已经存在的id执行update,不存在的做insert
几十万行的数据做loop,效率太低,请教高手解决方法,感谢。 sql 循环
[解决办法]
select id,wm_concat(t_result,'
[解决办法]
') as tot_result
from shopping
group by id
[解决办法]

select distinct id,
wm_concat(t_result) over(partition by id) t_result
from t_table


1A,B,C,D
3A,E,B,C,D
2A
4F,G

[解决办法]
select t.id, wmsys.wm_concat(t.t_result ) t_result from t_table t group by t.id
11A,B,C,D
22A
33A,B,D,E,C
44F,G

读书人网 >oracle

热点推荐