oracle記錄累計演算法

perfychi發表於2014-02-11
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章