oracle中多列轉行
方式一 : 通過wm_concat函式,該函式在10g可以使用,11g 中不相容,12g中去掉了該函式, ,返回型別為varchar
語法:wm_concat(列)
例子:Select wm_concat(Rownum) From dual Connect By Rownum < 10;
優點:語法簡單
缺點:字元長度不能超過4000,以逗號分隔,如果要以其他符號分割,還要替換,效能比較差
方式二:通過lisagg
,
返回型別為varchar
語法: listagg(引數,‘分隔符’) within group(order by 引數id)
例子:Select
listagg(Rownum,';') Within group(Order By Rownum Desc)
From dual Connect By Rownum < 10;
優點:可以排序,並且可以自定義分隔符,效率也高
缺點:拼接字元長度不能超過4000
方式三:通過xmlagg,是解析MXL用的,也可以用作字元拼接,返回clob型別
語法:
XMLAGG(XMLPARSE(CONTENT 欄位 || 分隔符 WELLFORMED) ORDER BY 欄位).GETCLOBVAL()
或
XMLAGG(XMLELEMENT(e, 字串 , 分隔符).Extract('//text()')).GETCLOBVAL()
例子:
可以使用下面兩種之一:
Select Xmlagg(Xmlparse(Content Rownum || ',' Wellformed) Order By Rownum Desc)
.Getclobval()
From Dual
Connect By Rownum < 30000;
Select Xmlagg(Xmlelement(e, Rownum, ',').Extract('//text()')).Getclobval()
From Dual
Connect By Rownum < 30;
優點:對字元拼接沒有長度限制
缺點:語法比較複雜
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557103/viewspace-2656949/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle列轉行Oracle
- Oracle行轉列、列轉行的Sql語句總結OracleSQL
- 行轉列與列轉行
- SQL 行轉列,列轉行SQL
- Mysql - 行轉列、列轉行MySql
- oracle中執行os命令(轉)Oracle
- Oracle 多行分多列Oracle
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- oracle一列拆分為多列Oracle
- hive經典案列--top N(行轉列\列轉行)Hive
- sql的行轉列(PIVOT)與列轉行(UNPIVOT)SQL
- 【函式】Oracle12c 列轉行函式使用listagg函式Oracle
- oracle按列求乘積(轉)Oracle
- SQL列轉行SQL
- Spark SQL中列轉行(UNPIVOT)的兩種方法SparkSQL
- 多維陣列轉一維陣列(降維的多種方式)陣列
- mysql基礎 行轉列MySql
- Hive行轉列函式Hive函式
- mysql動態行轉列MySql
- My SQL 列轉行操作SQL
- 在Linux命令列中進行大小寫字元轉換Linux命令列字元
- Databricks 第11篇:Spark SQL 查詢(行轉列、列轉行、Lateral View、排序)SparkSQLView排序
- 訊息佇列中的Oracle佇列Oracle
- Excel 如何批次將矩陣(多行多列)資料轉為單行或單列資料Excel矩陣
- [轉] Oracle資料庫中建立表時怎樣考慮列順序Oracle資料庫
- python多執行緒中訊息佇列如何實現?Python執行緒佇列
- Oracle Rman多通道故障轉移問題分析Oracle
- sql、oracle資料多行轉單行SQLOracle
- Oracle多列統計資訊與直方圖對有關聯多列查詢影響Oracle直方圖
- T-SQL——將字串轉換為多列SQL字串
- oracle 資料庫對於多列求最大值Oracle資料庫
- SQL 行轉列 PIVOT 學習示例SQL
- MySQL 行轉列詳情鍾萼MySql
- Java中List陣列互轉Java陣列
- Oracle中的虛擬列索引-nosegment indexOracle索引Index
- oracle中通過decode實現行變列的二維表統計展示Oracle
- excel列轉行怎麼做 excel如何轉置行列Excel
- 多執行緒學習-Disruptor佇列執行緒佇列