標籤:
Oracle一列的多行資料拼成一行顯示字元
oracle 提供了兩個函數WMSYS.WM_CONCAT 和 ListAgg函數。 www.2cto.com 先介紹:WMSYS.WM_CONCAT例: id name 1 aa 2 bb 3 cc 要的結果是"aa,bb,cc" select WMSYS.WM_CONCAT(a.name) from user a這樣的話,查詢出的結果:"aa,bb,cc" www.2cto.com 分隔字元如果不需要用英文的逗號,需要改成別的符號比如分號的,可以用下面的方法替換下:select replace(WMSYS.WM_CONCAT(a.name),‘,‘,‘;‘) from user a結果:"aa;bb;cc"======================================================================ListAgg函數 listagg函數的文法結構如下: LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )] listagg雖然是彙總函式,但可以提供分析功能(比如可選的OVER()子句)。使用listagg中,下列中的元素是必須的: www.2cto.com •需要彙總的列或者運算式 •WITH GROUP 關鍵詞 •分組中的ORDER BY子句例子: DEPTNO ENAME--------- ---------- 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES按照DEPTNO欄位分組,對結果集進行字串彙總,結果如下:DEPTNO AGGREGATED_ENAMES--------- ------------------------- 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONESSQL:SELECT deptno,LISTAGG(ename, ‘,‘) WITHIN GROUP (ORDER BY ename) AS employees FROM emp GROUP BY deptno;
Oracle一列的多行資料拼成一行顯示字元