`
zjx2388
  • 浏览: 1340941 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

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

oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数。

 

先介绍: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"

 

分隔符如果不需要用英文的逗号,需要改成别的符号比如分号的,可以用下面的方法替换下:

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中,下列中的元素是必须的:

•需要聚合的列或者表达式
•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实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf

    Oracle 中实现行转列功能,并使用逗号进行隔开拼接,成为一条数据是指将多行数据合并成一行数据,并用逗号分隔每个字段的值。这种功能在实际应用中非常有用,例如在报表生成、数据分析和数据整合等场景中。 在 ...

    Oracle笔试题目带答案.docx

    13. SELECT语句中的地址拼接会返回1列,因为所有地址字段被合并成一个单一的字符串。 14. TO_CHAR函数可以针对任意数据类型进行操作,用于将数据转换为字符格式。 15. PARTITION BY LIST(msn_id)子句表示按msn_id...

    OCP 12c之01_12c_ocp_Sql_Workshop

    - 字符串连接和字面字符串:使用连接符“||”可以将多个字符串或列值拼接成一个字符串返回,而字面字符字符串允许直接在查询中嵌入字符串。 - 替代引号操作符:SQL中使用双引号来指定大小写敏感的标识符。 - ...

    sql高级进阶

    - 将结果集反向转置为一列:将多行数据合并为单个字段。 - 抑制结果集中的重复值:使用DISTINCT关键字。 - 利用“行转列”进行计算:在转换后的数据上进行分析计算。 - 给数据分组:使用GROUP BY子句对数据进行...

    2009达内SQL学习笔记

    SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。 多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号...

Global site tag (gtag.js) - Google Analytics