LISTAGG

LISTAGG(measure_expr [, ‘delimiter‘])
  WITHIN GROUP (order_by_clause) [OVER query_partition_clause]

SELECT DEPARTMENT_ID "Dept",
           HIRE_DATE "Date",
           LAST_NAME "Name",
           LISTAGG(LAST_NAME, ‘; ‘) WITHIN GROUP(ORDER BY HIRE_DATE, LAST_NAME) OVER(PARTITION BY DEPARTMENT_ID) AS "Emp_list"
      FROM EMPLOYEES
     WHERE TO_CHAR(HIRE_DATE, ‘YYYY‘) < ‘2003‘
     ORDER BY "Dept", "Date", "Name";
 Dept Date        Name                      Emp_list
----- ----------- ------------------------- -------------------------
   30 2002/12/7   Raphaely                  Raphaely
   40 2002/6/7    Mavris                      Mavris
   70 2002/6/7    Baer                         Baer
   90 2001/1/13   De Haan                   De Haan
  100 2002/8/16   Faviet                     Faviet; Greenberg
  100 2002/8/17   Greenberg               Faviet; Greenberg
  110 2002/6/7    Gietz                       Gietz; Higgins
  110 2002/6/7    Higgins                   Gietz; Higgins

时间: 2024-10-07 18:50:08

LISTAGG的相关文章

oracle listagg函数、lag函数、lead函数 实例

Oracle大师Thomas Kyte在他的经典著作中,反复强调过一个实现需求方案选取顺序: “如果你可以使用一句SQL解决的需求,就使用一句SQL:如果不可以,就考虑PL/SQL是否可以:如果PL/SQL实现不了,就考虑Java存储过程是否可以:如果这些都不可能实现,那么就需要考虑你是否真的需要实现这个需求.” 各个关系型DBMS产品都在遵守关系型数据库模型的基本体系架构,遵循通用的SQL国际规范.同时,为了更好地配合自身数据库实现的特征,以及提供更加丰富的功能,各个DBMS纷纷在标准SQL上

Oracle函数之LISTAGG

最近在学习的过程中,发现一个挺有意思的函数,它可实现对列值的拼接.下面我们来看看其具体用法. 用法: 对其作用,官方文档的解释如下: For a specified measure, LISTAGG orders data within each group specified in the ORDER BY clause and then concatenates the values of the measure column. 即在每个分组内,LISTAGG根据order by子句对列植进

Oracle 列转行函数 Listagg()

这是一个Oracle的列转行函数:LISTAGG() 先看示例代码: Sql代码   with temp as( select 'China' nation ,'Guangzhou' city from dual union all select 'China' nation ,'Shanghai' city from dual union all select 'China' nation ,'Beijing' city from dual union all select 'USA' nat

listagg 列转换

select t.* from TEST23 T; select t.id,listagg(t.name,',')within group(order by t.id) name from TEST23 t group by t.id

关于oracle函数listagg的使用说明

工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的:客户希望能够实现这样的汇总合并: 那么通常我会使用listagg这个函数,但是好多网上都是系统的全面的介绍listagg这个函数的使用方法,看起来很费力气.在这里我简明扼要的说明一下 实现这个需求的语句是这样的:select name,listagg(ddate,' / ') within group (order by  name) as ddatefrom aagroup by name 需

oracle函数listagg的使用说明(分组后连接字段)

关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用listagg这个函数,但是好多网上都是系统的全面的介绍listagg这个函数的使用方法,看起来很费力气.在这里我简明扼要的说明一下 实现这个需求的语句是这样的: select name, listagg(ddate,' / ') within group (order by name) as dd

listagg( ) within group ( order by ) 与 wm_concat

listagg( ) within group ( order by ) 与 wm_concat --oracle 11g 及以后适合 最好 select spbywslid,listagg(xm,',') within group (order by spbywslid) col_name from tpg_jtcyqk group by spbywslid; --oracle 10g 及以前版本用 select spbywslid,wm_concat(xm)xm from tpg_jtcyq

Oracle11.2新特性之listagg函数 (行列转换)

Oracle11.2新增了LISTAGG函数,可以用于字符串聚集,测试如下: 1,版本SQL> select * from v$version; BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0

【Oracle】oracle之listagg分析函数

oracle分析函数——listagg篇 (1)使用listagg将多行数据合并到一行 例表: select deptno, ename from emp order by deptno, ename 假设有一个需求,需要将emp表中相同部门的雇员姓名存放到一行中,不同的姓名用逗号“,”分隔,结果如下图: 我们可以用oracle11g里面的分析函数listagg来实现,SQL语句如下: select deptno, listagg(ename,',') within group (order b

oracle列转行 WM_CONCAT LISTAGG

开发给个SQL说给某个条件时报ORA-22922 代码段: 1 SELECT 袋号, 2 SUM(实际重量) AS 实际重量, 3 SUM(材积重量) AS 材积重量, 4 COUNT(运单号) AS 件数, 5 TO_CHAR(WMSYS.WM_CONCAT(运单号)) AS 运单编号 6 FROM TBL 7 GROUP BY 袋号 修改成如下后解决: 1 SELECT 袋号, 2 SUM(实际重量) AS 实际重量, 3 SUM(材积重量) AS 材积重量, 4 COUNT(运单号) AS