有時候想要將具有相同性質或意義的多筆資料組合成一筆資料,之前我都是用程式的方式解決 例如: 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
文章標籤
全站熱搜
創作者介紹
創作者 keven 的頭像
keven

平凡的幸福(備站)

keven 發表在 痞客邦 留言(0) 人氣(1,087)