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
|