oracle查询数据列竟然还可以这样合并数据的两种方法
  0ZwfR6X6Muxs 2023年11月26日 73 0


主要说明一下oracle11g版本的两种方法,以及避免的问题

这个是没有引用之前 因为角色名称会导出多行数据出现,需要合并角色名称这一栏的数据,其他数据进行分组

/**这里是最开始的效果sql
	select s1.truename as truename, s2.rolenameas rolename,
	s3.deptname as 	deptname from user s1 
	left join s2 on s1.userid = s2.userid
	left join s3 on s3.fzruserid = s2.userid
	left join s4 on s1.userid = s4.userid
	group by s1.truename,s3.deptname,s2.rolename

oracle查询数据列竟然还可以这样合并数据的两种方法_字段名

wmsys.wm_concat() 方法以及乱码解决方法

/** 这是使用第一种拼凑的方式 这里默认是以逗号隔开的 wmsys.wm_concat()
	  * 这里面的to_char()是为了解决wmsys.wm_concat()函数乱码的问题,小伙伴可以试一下
	select s1.truename as truename, wmsys.wm_concat(to_char(s2.rolename)) as rolename,
	s3.deptname as 	deptname from user s1 
	left join s2 on s1.userid = s2.userid
	left join s3 on s3.fzruserid = s2.userid
	left join s4 on s1.userid = s4.userid
	group by s1.truename,s3.deptname

查询结果如下:

oracle查询数据列竟然还可以这样合并数据的两种方法_字段名_02

这里是不加to_char()的查询结果

oracle查询数据列竟然还可以这样合并数据的两种方法_角色名_03

listagg(字段名,’,’) within group(order by 字段名 ) 方法以及乱码解决方法

/** 这是使用第一种拼凑的方式 这里默认是以逗号隔开的 
	  *	listagg(字段名,',') within group(order by 字段名 )
	  * 这里面的to_char()是为了解决
	  * listagg(字段名,',') within group(order by 字段名 )函数乱码的问题,小伙伴可以试一下
	select s1.truename as truename, 
	listagg(to_char(s2.rolename),',') within group(order by s2.rolename ) as rolename,
	s3.deptname as 	deptname from user s1 
	left join s2 on s1.userid = s2.userid
	left join s3 on s3.fzruserid = s2.userid
	left join s4 on s1.userid = s4.userid
	group by s1.truename,s3.deptname

查询结果如下:

oracle查询数据列竟然还可以这样合并数据的两种方法_字段名_02

希望能帮到你


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月26日 0

暂无评论

推荐阅读
0ZwfR6X6Muxs