`
datamachine
  • 浏览: 163557 次
社区版块
存档分类
最新评论

报表开发中通用group_concat函数的实现方法

阅读更多

         使用JasperBIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理。比如基于MSSQL/Oracle时,在报表中呈现类似group_concat函数的计算结果。

         集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明通用group_concat函数的实现过程。

 

         MSSQL的表Table1有四个字段,字段Col1Col2Col3是分组字段,Col4是汇总字段,部分数据如下:



 

         报表工具需要的数据源如下:



 
         集算器代码:



 
         A1=mssqlDB.query("select * from table1 where Col1 in"+arg)

         这句代码执行SQL,从数据库中取出数据。其中arg是来自报表的参数,比如(10,20)A1的计算结果如下:



 
      A2=A1.group(Col1,Col2,Col3;~.(Col4).string@d():Col4)

        这句代码将A1按照Col1Col2Col3分组,并将每组数据中的Col4以逗号拼接在一起。代码中的~表示每组数据,比如第一组有三条记录。~.(Col4)表示取出每组数据中的Col4字段,比如第一组就是集合[A12G3 , K78DE , MAT12]。函数string可将集合中的成员拼接成一个字符串,默认分隔符是逗号,选项@d表示不给成员加引号,因此表达式[A12G3 , K78DE , MAT12].string@d()等于” A12G3 , K78DE , MAT12。表达式“:Col4”表示将前面的计算结果重命名为Col4

         A3就是本案例的最终计算结果,如下:

 

 

        A3: result A2

         这句代码将A2中的数据返回给报表工具。

         集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库,集成方案请参考相关文档。

 

         接下来以JasperReport为例设计报表,表样如下:



 

    预览后可以看到报表结果:




 
 

 

 

  • 大小: 18.2 KB
  • 大小: 14.2 KB
  • 大小: 21.6 KB
  • 大小: 23 KB
  • 大小: 41.5 KB
  • 大小: 15.9 KB
  • 大小: 33 KB
  • 大小: 29.7 KB
1
0
分享到:
评论

相关推荐

    【GROUP_CONCAT】使用之MySQL官方文档翻译

    `GROUP_CONCAT` 结果的长度受到 `group_concat_max_len` 系统变量的限制,默认值为 1024 字节。如果结果超过了这个长度,将会被截断。可以通过以下语句动态调整这个值: ```sql SET SESSION group_concat_max_...

    oracle 创建wm_concat函数

    通过以上步骤,可以在Oracle 10G及更早版本中实现与内置`wm_concat`函数类似的功能。这种方法不仅可以帮助我们在早期版本的Oracle数据库中实现字符串连接功能,还可以加深我们对Oracle数据库内部机制的理解。

    wm_concat函数所需资源包

    在Oracle数据库环境中,`WM_CONCAT`函数是一个非常实用的工具,用于将多个行的数据合并成...提供的资源包恰好为此提供了帮助,包括可能的PL/SQL函数实现、示例查询等,以便用户在升级数据库后继续顺畅地进行数据操作。

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    在Oracle数据库环境中,WMSYS.WM_CONCAT函数是一个用于字符串连接的实用工具,尤其在处理多值列时非常有用。然而,有时由于各种原因,这个函数可能丢失或损坏,需要进行重建。以下是对重建WMSYS.WM_CONCAT函数涉及的...

    wm_concat函数DDL.zip

    自定义`wm_concat`函数的一种常见方法是创建一个聚合函数,通常使用PL/SQL实现。以下是一个简单的例子: ```sql CREATE OR REPLACE FUNCTION WM_CONCAT (p_val VARCHAR2) RETURN VARCHAR2 PARALLEL_ENABLE ...

    解决Oracle没有WM_CONCAT函数.zip

    在Oracle数据库中,WM_CONCAT是一个非常实用的聚合函数,用于将一组字符串连接成一个单一的字符串,类似于SQL Server中的STRING_AGG或MySQL中的GROUP_CONCAT。然而,Oracle官方并没有提供这个函数,它是一个第三方...

    wmsys_wm_concat函数结果拆解

    接下来,我们将详细分析给定的部分内容中的SQL语句,理解其如何实现对`wmsys.wm_concat`函数结果的拆解。 #### SQL语句解析 ```sql with tt as ( select 1 id, 'Jack,Tom,Ben' Name from dual union all select ...

    Oracle新版中不支持 WM_CONCAT的处理方法

    Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替

    MySQL中group_concat函数深入理解

    需要注意的是,`GROUP_CONCAT`函数返回的字符串长度受到`group_concat_max_len`系统变量的限制。默认情况下,这个值是1024个字节,如果你需要处理更长的字符串,可以通过`SET`语句临时或全局地修改此变量的值: ```...

    Oracle没有WM_CONCAT函数的解决办法.rar

    1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:sqlplus -logon sys/123 as sysdba 3、执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; 如果执行结果报错,说找不...

    oracle 9i 实现wm_concat函数

    oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割

    12C开始_wm_concat函数.sql

    Oracle从12C版本开始,不支持wm_concat函数,我们可以采取的办法有使用listagg函数代替wm_concat函数,或者为了减小修改程序的工作量,可以通过手工创建wm_concat函数来解决这个问题。

    MySQL GROUP_CONCAT限制解决方案

    作用:  GROUP_CONCAT函数可以拼接某个字段值成字符串,默认的分隔符是 逗号,即...SHOW VARIABLES LIKE 'group_concat_max_len' 操作方法:(如图) 调整长度设置方法: (1)在MySQL配置文件中加入:  文件:my.ini

    Oracle 11g 重建WMSYS.WM_CONCAT函数

    Oracle10g之后有些版本已不包含WMSYS.WM_CONCAT函数,若用到此函数, 系统会提示异常:ORA-00904: "WM_CONCAT": invalid identifier 因此需单独重建此函数,方法如下: 解压附件,在sqlplus中执行包里的owmctab....

    自写函数用于替换wm_concat函数.zip

    总之,"自写函数用于替换wm_concat函数.zip"提供的解决方案旨在帮助Oracle数据库用户在不支持`WM_CONCAT`的环境中实现行数据的合并,利用`LISTAGG`等内置函数,提供了灵活且高效的数据处理方式。对于那些依赖`WM_...

    ORA-00904: "WM_CONCAT": 标识符无效

    在升级到新的Oracle版本时,确保充分测试和理解新版本中函数和特性的变化是非常重要的。对于依赖过时函数的旧代码,需要进行适配以确保在新环境中正常运行。如果压缩包中的文件是自定义函数,那么在你的环境中部署这...

    db2函数大全,使用方法

    DB2 函数大全使用方法 DB2 函数大全是 DB2 数据库管理系统中提供的一组函数,用于进行数据处理和分析。本文将对 DB2 函数大全进行总结,包括 AVG、CORR、COUNT、COVAR、MAX、MIN、STDDEV、SUM、VAR 等函数,并提供...

    GROUP_CONCAT的用法

    2. GROUP_CONCAT 函数的结果集最大长度为 1024 字符,可以使用 `GROUP_CONCAT_MAX_LEN` 系统变量来调整结果集的最大长度。 3. GROUP_CONCAT 函数忽略空值,可以使用 `COALESCE` 函数来处理空值。 GROUP_CONCAT 函数...

    类似于wmsys.wm_concat的自定义函数clob版

    在Oracle数据库中,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,它用于将多行数据合并成一个单行字符串。然而,由于其内部处理机制,当需要合并的数据量过大时,可能会遇到“字符串缓冲区太小”的错误。这是因为`WM...

Global site tag (gtag.js) - Google Analytics