当前位置:Gxlcms > 数据库问题 > Oracle一列的多行数据拼成一行显示字符

Oracle一列的多行数据拼成一行显示字符

时间:2021-07-01 10:21:17 帮助过:2人阅读

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,JONES SQL: SELECT deptno,LISTAGG(ename, ‘,‘) WITHIN GROUP (ORDER BY ename) AS employees FROM  emp GROUP BY deptno;

Oracle一列的多行数据拼成一行显示字符

标签:

人气教程排行