2020-11-02 oracle sql listagg函数使用
listagg 函数的作用就是将多行记录合成一行记录
基础用法:listagg(a,b) within group(order by c)
a指的是要进行拼接的字段, b指的是连接字段与字段之前的连接符号 c指的是按照什么顺序将字段连接,sql语句最后面要使用group by 分组,listagg是将分组之后的字段数据进行拼接,如果没有最后没有分组会报错 ora00937:not a single-group group function.
假设现在存在一个表users,包含以下字段
用户编号( id varchar2(30) , )用户姓名 (name varchar2(100) ,)用户年龄 (age number,)用户性别 (sex number , ) 男:1 , 女:0用户部门(dept varchar2(20) ,)分为 a,b,c,d四个小部门。
现在要查出每个部门的员工编号集合,每个部门当做一条记录。
select dept,
listagg(id,',') within group(order by age) ids ,
listagg(name,',') within group(order by age) names
from users group by dept
这样就可以查出部门编号、部门下用户id拼接的ids,部门下用户名拼接的names 的数据了。
mysql也有对应的合并函数 group_concat()也可以实现oracle listagg的效果
语法
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )
select dept,group_concat ( id ORDER BY age separator ',' ) ids,group_concat ( name ORDER BY age separator ',' ) names,
from users group by dept
本文mysq实现部分参考了 其他博客,参考博客链接:https://blog.csdn.net/sinat_36257389/article/details/95052001
2020-11-02 oracle sql listagg函数使用相关推荐
- oracle的listagg函数
今天需要将 BDST_ID相同的PROJECT_ID用逗号分隔拼成一个字符串,于是想到了oracle的listagg函数 表名为PM_BDST_PROJECT select tt.BDST_ID, l ...
- oracle的concat字符串太长,oracle 使用listagg函数后 字符串连接的结果过长
oracle 使用listagg函数后 字符串连接的结果过长最终解决 SELECT r.department_id law_dept_id, ( SELECT xmlagg(xmlparse(cont ...
- 【Oracle】LISTAGG 函数的用法
函数介绍 listagg函数是Oracle 11.2 c 版本推出的,用于数据分组后将指定列数据通过间隔符号拼接,将多行转为一行显示. 实际使用 以班级为单位,查询每个班级学生(同班学生显示在一行) ...
- 【Oracle】LISTAGG 函数的使用
LISTAGG 函数介绍 listagg 函数是 Oracle 11.2 推出的新特性. 其主要功能类似于 wmsys.wm_concat 函数, 即将数据分组后, 把指定列的数据再通过指定符号合并. ...
- Oracle 中 LISTAGG 函数的介绍以及使用
LISTAGG 函数介绍 listagg 函数是 Oracle 11.2 推出的新特性. 其主要功能类似于 wmsys.wm_concat 函数, 即将数据分组后, 把指定列的数据再通过指定符号合并. ...
- oracle ora32771,listagg函数 ORA-01489: result of string concatenation is too long的解决办法
概述 listagg函数是Oracle 11g推出的一个分组函数,可以将字符串按分组连接起来. SQL> select deptno ,listagg(ename,'->') within ...
- Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数[转]
一大早来广图排了大半个钟的队,总算占了个好位子.--2018-07-28 1.环境: 1.操作系统 windows 10 2.数据库:Oracle Database 11g r2 2.需求: 还是看例 ...
- Oracle的 wm_concat 的排序问题,Oracle的 listagg 函数
一大早来广图排了大半个钟的队,总算占了个好位子.--2018-07-28 1.环境: 1.操作系统 windows 10 2.数据库:Oracle Database 11g r2 2.需求: 还是看例 ...
- Oracle的 listagg 函数,多行合并一行
转自:https://blog.csdn.net/Huay_Li/article/details/81257655 --创建学校类型-年级表 create table SchoolGrade(scho ...
最新文章
- @Bean 与@Component的区别
- 图像的评价指标之SSMI——结构相似性
- android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章
- 自动机理论、形式语言和计算导论提纲
- 2020身高体重标准表儿童_2020年儿童标准体重表出炉!过胖影响发育!(附身高体重标准表)...
- P3986 斐波那契数列
- php工作要求,PHP工作岗位要求
- 信息论实验-信源编码算法 (Huffman and Shannonn Fano编码C++实现)
- 使用海康8700综合平台对ds-6908解码器进行解码上墙大概配置
- html静态网站基于游戏网站设计与实现共计10个页面 (仿地下城与勇士游戏网页)
- StudentManagerSystem(学生管理系统)(利用Result类,各种工具类)
- 主机链接vm虚拟机中的oracle实例
- android技术篇(三)解密data区
- Matlab图形窗口大小的控制 ,plot窗口大小,figure大小,axis设置,实用
- 转载:html打开本地文件夹读取,显示图片
- vmware 解决二进制转换与此平台上的长模式不兼容
- linux IO_FILE 利用
- TinyXml 介绍
- 我看电影阿凡达(Avatar)
- caffe中HDF5层及数据生成