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_jtcyqk group by spbywslid;

select deptno,wm_concat(ename)name,count(*)rs from emp group by deptno

select deptno,listagg(ename,‘,‘) within group (order by ename ) aa from emp group by deptno

select deptno,listagg(ename,‘,‘) within group (order by ename ) aa,count(*)bb from emp group by deptno
时间: 2024-12-27 21:05:18

listagg( ) within group ( order by ) 与 wm_concat的相关文章

Oracle的 listagg() WITHIN GROUP ()函数使用

1.使用条件查询  查询部门为20的员工列表 -- 查询部门为20的员工列表    SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO = '20' ; 效果: 2.使用  listagg() WITHIN GROUP ()  将多行合并成一行 SELECT        T .DEPTNO,        listagg (T .ENAME, ',') WITHIN GROUP (ORDER BY T .ENAME) names   

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

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 分隔符如果不需要用

Oracle 高级查询

Oracle SQL 一些函数用法 以下sql环境都是在 Oracle 11g/scott完成 Group by 与GROUP BY一起使用的关建字 GROUPING,GROUP SET,ROLLUP,CUBE结合这些特性的函数可以实现SQL的明细+分组统计 GROUPING GROUPING 记录是对哪个字段进行统计,其值只能是 0 & 1 Group(column) =0 表示此字段参与了分组统计 =1表示字段未参与分组统计 select deptno,job,sum(sal),groupi

Oracle 查询高级用法

原文章的出处:http://blog.csdn.net/lanchengxiaoxiao/article/details/17248027 Oracle SQL 一些函数用法 以下sql环境都是在 oracle 11g/scott完成 Group by 与GROUP BY一起使用的关建字 GROUPING,GROUP SET,ROLLUP,CUBE结合这些特性的函数可以实现SQL的明细+分组统计 GROUPING GROUPING 记录是对哪个字段进行统计,其值只能是 0 & 1 Group(c

oracle高级SQL(四)--SQL行列转换专题2

[上一专题]  行列转换1  -- PIVOT与UNPIVOT函数的介绍 实现案例 1001 lufei 1001 shanzhi 1001 namei 1001 qiaoba 实现效果如下: 1001 lufei,shanzhi,namei,qiaoba 典型的行列转换:实现这种方法有很多. 其中oracle11g之后提供了listagg函数;用来实现上面的效果最好不过了:我们来看下listagg语法 listagg函数的语法结构如下: >listagg( [,]) within group

oracle 转置实现

下面是3种方法 方法1:SYS_CONNECT_BY_PATH , ROW_NUMBER() OVER(PARTITION BY  ..  ORDER BY ..)  , START WITH , CONNECT BY PRIOR 组合使用 方法2:wmsys.wm_concat 方法3:listagg(oracle 11g release 2) 用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来. listagg 语法概述 listagg函数的语法结构如下:L

小知识点总结1

1.正在连接的用户不能删除,确实要删除的话,如下 select sid,serial#,username from v$session where user='USERNAME'; alter system kill session 'sid,serial#'; drop user username cascade; 2.在一台机器中想分析下执行计划,但是在sqlplus中输入set autotrace on 报cannot set autotrace 错误解决方法如下:首先必须采用用Oracl

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

Oracle行转列函数由wmsys.wm_concat到listagg的进化

测试表数据 select * from test01 ID    NAME 10    CLARK 10    KING 10    MILLER 20    ADAMS 20    FORD 20    JONES 20    SCOTT 20    SMITH 30    ALLEN 30    BLAKE 30    JAMES 30    MARTIN 30    TURNER 30    WARD 1.wmsys.wm_concat用法(在10g下) 这个函数很常见,但Oracle官方