ITPub博客

首页 > 数据库 > Oracle > oracle记录累计算法

oracle记录累计算法

原创 Oracle 作者:perfychi 时间:2014-02-11 11:18:33 0 删除 编辑
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)





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-1079386/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    486
  • 访问量
    2693564