oracle group 合并相同内容的列 不同内容以逗号分隔显示

实例中将把部门表 (DEPT 表) 与员工表 (EMP 表) 关联,查询每个部门下的所有员工姓名,员工姓名之间以逗号分隔(如图一)。

oracle group 合并相同内容的列 不同内容以逗号分隔显示
图一:执行结果

以下两种方法都可以。

1、WMSYS.WM_CONCAT(列名)函数

介绍:其函数在 Oracle 10g 推出,在 10g 版本中,返回字符串类型,在 11g 版本中返回 clob 类型。括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串。

SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,WMSYS.WM_CONCAT(E.ENAME) AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME

拼接多列(拼接员工姓名和员工编号)

SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,WMSYS.WM_CONCAT(E.ENAME||'('||E.EMPNO||')') AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME

2、LISTAGG(列名,) WITHIN GROUP(ORDER BY 列名)函数

介绍:其函数在 Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。

SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,LISTAGG(E.ENAME,',') WITHIN GROUP(ORDER BY E.ENAME) AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME
目录
  • 1、WMSYS.WM_CONCAT(列名)函数
  • 2、LISTAGG(列名,) WITHIN GROUP(ORDER BY 列名) 函数
  • 手机扫描二维码访问

      本文标题:《oracle group 合并相同内容的列 不同内容以逗号分隔显示》作者:极四维博客
      原文链接:https://cway.top/post/957.html
      特别注明外均为原创,转载请注明。

      分享到微信

      扫描二维码

      可在微信查看或分享至朋友圈。

      相关文章

      发表评论:

      ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

      «    2025年5月    »
      1234
      567891011
      12131415161718
      19202122232425
      262728293031

      搜索

      控制面板

      您好,欢迎到访网站!
        查看权限

      最新留言

      文章归档

      • 订阅本站的 RSS 2.0 新闻聚合