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