oracle行轉列(連接字符串函數)


方法一:wmsys.wm_concat(column)      

介紹:其函數在Oracle 10g推出,在10g版本中,返回字符串類型,在11g版本中返回clob類型。括號里面的參數是列,而且可以是多個列的集合,也就是說在括號里面可以自由地用‘||’合並字符串。如下面的例子: Select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   from shopping   group by u_id

方法二:listagg (column,[,]) within group (order by ) [over (partition by  )]           

介紹:其函數在Oracle 11g 版本中推出,對分組后的數據按照一定的排序進行字符串連接。其中,“[,]”表示字符串連接的分隔符,如果選擇使用[over (partition by )]則會使其變成分析函數;

方法三:sys_connect_by_path(column,<分隔符>)          

介紹:其函數在Oracle 9i 版本中推出,用來合並鏈路的字符串。注意的是其一定要和connect by子句合用!

第一個參數是形成樹形式的字段,第二個參數是父級和其子級分隔顯示用的分隔符。

以上內容轉自:http://blog.sina.com.cn/s/blog_a637e97e01014pqo.html

 

使用注意:

SELECT c.gysid, listagg(c.wzlbid,',') within GROUP (ORDER BY c.wzlbid)   FROM  wzgl_gys_zrwmfw c GROUP BY gysid  

這幾個方法都可以實現行轉列,達到想要的效果。

但當數據量比較大時卻報ORA-01489:字符串連接的結果過長。

此時個人的解決辦法,只能轉到程序代碼中去處理。

希望,以此為鑒!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM