日期:2014-05-17  浏览次数:20830 次

求一个语句,谢谢

--建表
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  


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

------解决方案--------------------
 select t.id, wmsys.wm_concat(t.t_result ) t_result  from t_table t   group by t.id  
1 1 A,B,C,D
2 2 A
3 3 A,B,D,E,C
4 4 F,G