SQL> select * from test;
USERNAME SUBJECT
-------------------- --------------------
TOM T1
TOM T2
TOM T3
JACK J1
JACK J2
JACK J3
JACK J4
要求组织成:TOM(T1,T2,T3) , JACK(J1,J2,J3,J4)的形式
算法:
declare
v_head varchar2(4000) :='(';
v_tail varchar2(4000) :=')';
v_body varchar2(4000) :=')';
v_head_section varchar2(4000) :='';
begin
for i in (select distinct username from test) loop
v_head_section := i.username || v_head;
v_body := '';
for j in (select username,subject from test) loop
if i.username = j.username then
v_body := v_body || ',' || j.subject;
end if;
end loop;
dbms_output.put_line(v_head_section || trim(',' from v_body) || v_tail);
end loop;
end;
运行PL/SQL程序输出结果:
TOM(T1,T2,T3)
JACK(J1,J2,J3,J4)