1. SQL的弱點 1.1. SQL語句的執行結果轉換為想要的格式 1.1.1. 格式轉換 1.1.2. SQL語言本來就不是為了這個目的而出現的 1.1.3. SQL終究也只是主要用於查詢數據的語言而已 1.2. 生成報表的功能 1.2.1. 視窗函數 1.3. SQL不是用來生成報表的語言,所以 ...
1. WM_CONCAT
示例:
SELECT 欄位1 ,WM_CONCAT(欄位2) FROM 表 GROUP BY 欄位1
說明:欄位2沒有排序功能,還有就是只能使用逗號進行分割,不能使用其他自定義的分隔符進行分割
2. LISTAGG
示例:
SELECT 欄位1 ,LISTAGG(欄位2, ',') WITHIN GROUP (ORDER BY 欄位1, 欄位2) FROM 表 GROUP BY 欄位1
說明:欄位2可以按要求進行排序,如果不需要排序則在ORDER BY語句中將欄位2去除即可,還能自定義分隔符,缺點就是拼接字元不能超過VARCHAR2的最大長度
3. XMLAGG
示例:
SELECT 欄位1 ,RTRIM(XMLAGG(XMLPARSE(CONTENT 欄位2 || ',' WELLFORMED) ORDER BY 欄位1, 欄位2).GETCLOBVAL(), ',')
FROM 表 GROUP BY 欄位1
說明:在拼接欄位時可能超過VARCHAR2的最大長度時使用,拼接的欄位CLOB
以上3種方法中:
方法1好像效率較低,12C版本中好像已經被刪除掉了,
所以如果使用的版本的是12C以前的,並且數據量不是很大,不考慮效率的時候,可以考慮使用第一種方法,
如果考慮效率的話,優先選用第二種方法,如果拼接出的字元串可能會過大時請選擇第三種方法