有時候想要將具有相同性質或意義的多筆資料組合成一筆資料,之前我都是用程式的方式解決
例如:
SQL> select a,b from tmp_ddd;
A B
---------- ----------
bb CITY
bb BASE
aa JOKEN
aa MAY
一共有四筆資料,如今想要資料合併為CITY--BASE--JOKEN--MAY,其PL/SQL程式如下:
----------Code Start-------------------
Declare
vTmp varchar2(1000);
Cursor c1 is
select a,b from tmp_ddd ;
r1 c1%rowtype ;
I number := 0;
Begin
for r1 in c1 loop
I := I + 1;
if I=1 then
vTmp := r1.b ;
else
vTmp := vTmp || '--' || r1.b;
end if;
end loop ;
dbms_output.put_line(vTmp);
End;
----------Code End-------------------
但是Oracle有另一種方法可以解決這類的問題,其語法:
SELECT LISTAGG(COLUMN_NAME, LINK_WORD) WITHIN GROUP (ORDER BY COLUMN_NAME) from TABLE_NAME ;
SQL> select listagg(b,'--') within group(order by b) as List_b from tmp_ddd;
LIST_B
-------------------------------------
BASE--CITY--JOKEN--MAY
SQL> select a, listagg(b,'--') within group(order by b) List_b from tmp_ddd group by a ;
A LIST_B
---------- --------------------
aa JOKEN--MAY
bb BASE--CITY
- Sep 25 Thu 2014 10:07
Oracle PL/SQL 讓多筆資料合併成一筆資料
close
全站熱搜
留言列表
發表留言