Oracle把一列的值合并为一个值并用逗号分隔

标签: Oracle
12人阅读 评论(0) 收藏 举报
分类:

Oracle把一列的值合并为一个值,并用逗号分隔。

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


图一:执行结果

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


查看评论

oracle语句中如何把一列的值合并为一个值,用逗号隔开

在Oracle中則可以使用wm_concat 或 ListAgg 01.CREATE TABLE MyTest(xType NUMBER,City nvarchar2(200)); 02./ ...
  • HUXU981598436
  • HUXU981598436
  • 2014-07-26 20:21:41
  • 2071

oracle语句中把一列的值合并为一个值,用逗号隔开

oracle语句中把一列的值合并为一个值,用逗号隔开
  • u014267869
  • u014267869
  • 2016-08-12 22:11:18
  • 9103

oracle把一列数据变为一个字段用逗号分隔

在发送数据的时候,想把一列的数据组装成用逗号分隔的数据,发给对方,这时候就要用到oracle自带的函数了: SELECT listagg(info.clients, ',') within GR...
  • u012516166
  • u012516166
  • 2015-12-19 13:24:30
  • 2737

MySQL数据库,将一列数据组合成一行,并以逗号分割,GROUP_CONCAT

MySQL数据库的GROUP_CONCAT函数很厉害呀! “厉不厉害?厉不厉害?我就问你厉不厉害?!” “厉害呀!”...
  • qq_30679953
  • qq_30679953
  • 2016-06-22 18:07:34
  • 3887

在数据库中将同一个字段的多个值用逗号分开,并且合并成一列的方法

在数据库中将同一个字段的多个值用逗号分开,并且合并成一列的方法如下:在数据库中创建一个自定义函数:  CREATE   FUNCTION   f_catString(@id   uniqueident...
  • meloveself
  • meloveself
  • 2008-11-25 11:28:00
  • 2797

oracle 将多列数据合并成一列显示

oracle 多列数据显示成一列 ,2列数据合并在一起显示
  • mrczr
  • mrczr
  • 2017-06-29 09:53:43
  • 2689

SQL Server中,如何将所有符合条件的结果拼接成一列并用逗号隔开?

问题描述 比如,将如下结果: 表格:tb_Class 班级 学生名称 –id — name —— 101 小马 102 小强 101 小张 102 小...
  • mengmakies
  • mengmakies
  • 2016-05-28 23:11:18
  • 1715

oracle,把多列同时转成用逗号分割的一行,并去除重复数据

SELECT regexp_replace(create_user, '([^,]*)(,\1)+($|,)', '\1\3') createUser, regexp_replace(...
  • u011217058
  • u011217058
  • 2017-09-01 10:29:25
  • 436

oracle sql多条数据合并成一条,数据量大,用逗号隔开

SELECT xmlagg( XMLPARSE ( CONTENT TRANSLATE (unique_id USING CHAR_CS) || ',' WELLFORMED )).getcl...
  • zc901104
  • zc901104
  • 2017-01-09 09:53:36
  • 919

Oracle 联接查询,字表多行字段合并为一行,以逗号分隔的查询SQL

Oracle 连接查询,字表多行字段合并为一行,以逗号分隔的查询SQL   要做什么看标题就懂了。。。   背景:1. 现有二表:test_main, test_sub   2. t...
  • nchu2020
  • nchu2020
  • 2017-03-05 22:22:28
  • 1072
    个人资料
    等级:
    访问量: 100万+
    积分: 8334
    排名: 3035
    最新评论