我想查看BIRT报表设计器。我如何创建下面的计算列?A列值为A、B和C,B列值为0.25、0.33和0.21我需要结果列B的总和/列A的行数,转换为(0.25 + 0.33 + 0.21)/3我只在SQL中尝试过,但不知道如何在BIRT中做到这一点
cnjp1d6j1#
您可以使用以下表达式作为数据元素的一部分来执行此操作,该数据元素绑定到提供您的数据的数据集的行B:
Total.sum(dataSetRow["B"]) / Total.count(dataSetRow["B"]);
字符串报告将使用您的示例数据将该表达式计算为0,263。下面是一个最小的BIRT报告模板,其中包含提供示例数据的脚本数据源,可以将其保存为.rptdesign文件并在BIRT报告设计器中打开。
<?xml version="1.0" encoding="UTF-8"?> <report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.24" id="1"> <property name="createdBy">Eclipse BIRT Designer Version 4.13.0.v202303021806</property> <property name="units">in</property> <property name="iconFile">/templates/blank_report.gif</property> <property name="bidiLayoutOrientation">ltr</property> <property name="imageDPI">96</property> <data-sources> <script-data-source name="scriptedDataSource" id="4525"/> </data-sources> <data-sets> <script-data-set name="getSampleData" id="4543"> <list-property name="resultSetHints"> <structure> <property name="position">1</property> <property name="name">A</property> <property name="dataType">string</property> </structure> <structure> <property name="position">2</property> <property name="name">B</property> <property name="dataType">decimal</property> </structure> </list-property> <list-property name="columnHints"> <structure> <property name="columnName">A</property> <text-property name="displayName">A</text-property> </structure> <structure> <property name="columnName">B</property> <text-property name="displayName">B</text-property> </structure> </list-property> <structure name="cachedMetaData"> <list-property name="resultSet"> <structure> <property name="position">1</property> <property name="name">A</property> <property name="dataType">string</property> </structure> <structure> <property name="position">2</property> <property name="name">B</property> <property name="dataType">decimal</property> </structure> </list-property> </structure> <property name="dataSource">scriptedDataSource</property> <method name="open"><![CDATA[count = 0; colA = ["A","B","C"]; colB = [0.25, 0.33, 0.21];]]></method> <method name="fetch"><![CDATA[if(count < 3){ row["A"] = colA[count]; row["B"] = colB[count]; count++; return true; } return false; ]]></method> </script-data-set> </data-sets> <page-setup> <simple-master-page name="Simple MasterPage" id="2"> <page-footer> <text id="3"> <property name="contentType">html</property> <text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property> </text> </page-footer> </simple-master-page> </page-setup> <body> <data id="4562"> <property name="dataSet">getSampleData</property> <list-property name="boundDataColumns"> <structure> <property name="name">A</property> <text-property name="displayName">A</text-property> <expression name="expression" type="javascript">dataSetRow["A"]</expression> <property name="dataType">string</property> </structure> <structure> <property name="name">B</property> <text-property name="displayName">B</text-property> <expression name="expression" type="javascript">dataSetRow["B"]</expression> <property name="dataType">decimal</property> </structure> <structure> <property name="name">SumA_div_by_countB</property> <text-property name="displayName">SumB_div_by_countB</text-property> <expression name="expression" type="javascript">result = ""; try { result = Total.sum(dataSetRow["B"]) / Total.count(dataSetRow["B"]); } catch (error) { result = error; } result;</expression> <property name="dataType">string</property> <property name="allowExport">true</property> </structure> </list-property> <property name="resultSetColumn">SumA_div_by_countB</property> </data> </body> </report>
型
1条答案
按热度按时间cnjp1d6j1#
您可以使用以下表达式作为数据元素的一部分来执行此操作,该数据元素绑定到提供您的数据的数据集的行B:
字符串
报告将使用您的示例数据将该表达式计算为0,263。下面是一个最小的BIRT报告模板,其中包含提供示例数据的脚本数据源,可以将其保存为.rptdesign文件并在BIRT报告设计器中打开。
型