分组合并字符串

  • 文档创建者:axing
  • 编辑次数:4次
  • 最近更新:Kevin-s 于 2019-06-17
  • 1. 描述

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

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

    222


    2. 解决方案

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


    3. 示例

    3.1 通过设计器实现

    1)数据集

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

    2)模板设置

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

    222

    3)单元格属性

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

    222

    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 '分隔符'])


    附件列表


    主题: 报表应用
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!