SQL函数实现合并分组字符串

楼主
我是社区第238588位番薯,欢迎点我头像关注我哦~
1. 描述

在针对数字类型的数据时,我们有分组求和,求最大最小值等操作。

而在处理字符串类型的数据时,有时我们也需要将同分组的数据合并拼接到一起,实现效果如下图:



2. 解决方案

利用报表设计器的功能实现或是利用相关数据库的函数来实现。


3. 示例3.1 通过设计器实现

1)数据集

添加数据集 ds1,SQL 语句为:SELECT * FROM 部门

2)模板设置

将字段拖进相应的单元格中,模板设置如下:

3)单元格属性

选择 B1 单元格,右击选择“扩展”,将 B1 单元格扩展方向设置为“不扩展”,如下图所示:


4)保存预览

保存预览,即可上图所示效果。


3.2 通过 SQL 函数实现

通过设计器设置的方法虽然简单,但在大量数据的前提下,通过 SQL 预先处理好数据会使报表性能得到很大的提高。

下面介绍三大主流数据库各自的处理方法。(数据表结构均与上面的例子一致)

1)Oracle 数据库

select 总部门, wmsys.wm_concat(部门名称) as 部门名称 from 部门 group by 总部门

2)SQL server 数据库

SELECT 总部门, stuff((select ','+部门名称 from 部门 b where a.总部门=b.总部门 for xml path('')),1,1,'') as 部门名称 FROM 部门 a group by a.总部门

3)MySQL 数据库

select 总部门, group_concat(部门名称) from 部门 group by 总部门

4. 补充说明

设计器和 Oracle 的方法可以通过 replace 函数来修改字符之间的拼接符,SQL Server 和 MySQL 可以直接在函数里指定相应的拼接符。

其中 MySQL 的 group_concat 函数完整语法格式为group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])





编辑于 2020-9-11 11:42  
分享扩散:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0回帖数 1关注人数 7889浏览人数
最后回复于:2020-9-11 13:13

返回顶部 返回列表