Oracle的列轉行函數

來源:互聯網
上載者:User

1、列轉成行,如下資料

ID NAME

---------- ------------------------------

       10 ab

       10 bc

       10 cd

       20 hi

       20 ij

       20 mn

6 rows selected

2、調用oracle的函數

SQL> select id,wmsys.wm_concat(name) name from idtable

2 group by id;

       ID NAME

---------- --------------------------------------------------------------------------------

       10 ab,bc,cd

       20 hi,ij,mn

3、自訂

create or replace function getStrByList(fgf in varchar2,tab_name in varchar2,hzx in

varchar2,hbwbx in varchar2,hzxcsz in varchar2) return string

----功能描述:oracle多行合并成一行

----參數描述:

----fgf:分隔字元,對組合形成的資料中間插入分隔字元

----tab_name:查詢的資料來源表

----hzx:匯總項欄位

----hbwbx:合并文本項

----hzxcsz:匯總項參數值

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

is

  sql_str varchar2(1024);

  result_val varchar2(1024);

begin

     sql_str:='SELECT TRANSLATE (LTRIM (text,''@''),''*@'',''*'||fgf||''') researcherList FROM

(SELECT ROW_NUMBER() OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,lvl DESC) rn,n_sec_code,

text FROM (SELECT n_sec_code, LEVEL lvl,SYS_CONNECT_BY_PATH (c_researcher_code,''@'') text FROM

(SELECT '||hzx||' as n_sec_code, '||hbwbx||' as c_researcher_code,ROW_NUMBER() OVER(PARTITION BY

'||hzx||' ORDER BY '||hzx||','||hbwbx||') x FROM '||tab_name||' where '||hzx||'='''||hzxcsz||''')

a  CONNECT BY n_sec_code = PRIOR n_sec_code AND x - 1 = PRIOR x)) WHERE rn=1  ORDER BY

n_sec_code';

     EXECute IMMEDIATE sql_str INTO result_val;

     return result_val;

end getStrByList;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.