如何使用BIRT设计报告对表中的行进行分组后添加序列号?

问题描述 投票:0回答:1

我想在根据特定字段对行进行分组后添加序列号列。 前任。 现有数据

Serial No| Date       | Amount 
1        | 10/10/2020 | 2500
2        | 10/10/2020 | 3400
3        | 10/10/2020 | 1100
4        | 8/12/2021  | 2500

预期数据

Serial No| Date       | Amount
1        | 10/10/2020 | 7000
2        | 8/12/2021  | 2500

需要序列号帮助。

根据我的更改,我可以看到

Serial No| Date       | Amount
1        | 10/10/2020 | 7000
1        | 8/12/2021  | 2500

在数据分组内添加序号。 但我需要它基于分组记录。

java reporting birt
1个回答
0
投票

答案分为两部分:

  1. 按日期对值进行分组
    • 创建包含“日期”(日期)和“值”(整数)的数据集
      • 将“日期”拖放到“组(维度)”中,然后选择“常规组”
      • 将“金额”拖放到“摘要字段”中
    • 将新的数据立方体拖放到布局中。现在您应该已获得按日期汇总的值。
  2. 将行号添加到交叉表
    • 在报告的“初始化”脚本中(您可以在布局中单击某个空白位置并选择“脚本”选项卡来查找它),您必须通过添加以下内容来注册计数器:
      myCrosstabCount = 0;
      
    • 在布局中交叉表中的 [Date] 上方插入一个新的 Data 对象。例如,将其命名为“MyCounter”并将其数据类型设置为整数。
    • 将 MyCounter 的表达式设置为:
    • myCrosstabCount++;
      myCrosstabCount;
      
    • 将 [MyCounter] 和 [Date] 放入 2x1 网格中,使它们并排

这是一个带有脚本数据源的最小独立示例。将其存储为 .rptdesign 文件并在 BIRT Report Designer 4.13.0 中运行它

<?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>
    <list-property name="userProperties">
        <structure>
            <property name="name">Data Cube2.getSampleData.x</property>
            <property name="type">integer</property>
            <property name="isVisible">false</property>
        </structure>
        <structure>
            <property name="name">Data Cube2.getSampleData.y</property>
            <property name="type">integer</property>
            <property name="isVisible">false</property>
        </structure>
    </list-property>
    <property name="Data Cube2.getSampleData.x">135</property>
    <property name="Data Cube2.getSampleData.y">80</property>
    <property name="units">in</property>
    <method name="initialize"><![CDATA[myCrosstabCount = 0;
]]></method>
    <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">Date</property>
                    <property name="dataType">date</property>
                </structure>
                <structure>
                    <property name="position">2</property>
                    <property name="name">Amount</property>
                    <property name="dataType">integer</property>
                </structure>
            </list-property>
            <list-property name="columnHints">
                <structure>
                    <property name="columnName">Date</property>
                    <text-property name="displayName">Date</text-property>
                </structure>
                <structure>
                    <property name="columnName">Amount</property>
                    <text-property name="displayName">Amount</text-property>
                </structure>
            </list-property>
            <structure name="cachedMetaData">
                <list-property name="resultSet">
                    <structure>
                        <property name="position">1</property>
                        <property name="name">Date</property>
                        <property name="dataType">date</property>
                    </structure>
                    <structure>
                        <property name="position">2</property>
                        <property name="name">Amount</property>
                        <property name="dataType">integer</property>
                    </structure>
                </list-property>
            </structure>
            <property name="dataSource">scriptedDataSource</property>
            <method name="open"><![CDATA[count = 0;
colA = ['2020-10-10','2020-10-10','2020-10-10','2021-12-08'];
colB = [2500,3400,1100,2500];]]></method>
            <method name="fetch"><![CDATA[if(count < 4){    
    row["Date"] = colA[count];
    row["Amount"] = colB[count];        
    count++;
    return true;
}
return false;


]]></method>
        </script-data-set>
    </data-sets>
    <cubes>
        <tabular-cube name="Data Cube" id="4679">
            <property name="dimensions">
                <tabular-dimension name="Group" id="4680">
                    <property name="isTimeType">false</property>
                    <property name="defaultHierarchy">NewTabularHierarchy1</property>
                    <property name="hierarchies">
                        <tabular-hierarchy name="NewTabularHierarchy1" id="4681">
                            <property name="levels">
                                <tabular-level name="Date" id="4682">
                                    <property name="dataType">date</property>
                                    <property name="columnName">Date</property>
                                </tabular-level>
                            </property>
                        </tabular-hierarchy>
                    </property>
                </tabular-dimension>
            </property>
            <property name="measureGroups">
                <tabular-measure-group name="Summary Field" id="4683">
                    <property name="measures">
                        <tabular-measure name="Amount" id="4684">
                            <expression name="measureExpression" type="javascript">dataSetRow["Amount"]</expression>
                            <property name="dataType">integer</property>
                        </tabular-measure>
                    </property>
                </tabular-measure-group>
            </property>
            <property name="dataSet">getSampleData</property>
        </tabular-cube>
    </cubes>
    <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>
        <extended-item extensionName="Crosstab" extensionVersion="3.7.0" id="4685">
            <property name="cube">Data Cube</property>
            <property name="measures">
                <extended-item extensionName="MeasureView" id="4692">
                    <property name="measure">Amount</property>
                    <property name="detail">
                        <extended-item extensionName="AggregationCell" id="4693">
                            <property name="aggregationOnRow">Group/Date</property>
                            <property name="content">
                                <data id="4694">
                                    <property name="resultSetColumn">Amount_Group/Date</property>
                                </data>
                            </property>
                        </extended-item>
                    </property>
                    <property name="header">
                        <extended-item extensionName="CrosstabCell" id="4695">
                            <property name="content">
                                <label id="4696">
                                    <property name="textAlign">left</property>
                                    <text-property name="text">Amount</text-property>
                                </label>
                            </property>
                        </extended-item>
                    </property>
                </extended-item>
            </property>
            <property name="rows">
                <extended-item extensionName="CrosstabView" id="4687">
                    <property name="views">
                        <extended-item extensionName="DimensionView" id="4688">
                            <property name="dimension">Group</property>
                            <property name="levels">
                                <extended-item extensionName="LevelView" name="NewLevel View" id="4689">
                                    <property name="level">Group/Date</property>
                                    <property name="member">
                                        <extended-item extensionName="CrosstabCell" id="4690">
                                            <property name="content">
                                                <grid id="4699">
                                                    <column id="4700"/>
                                                    <column id="4701"/>
                                                    <row id="4702">
                                                        <cell id="4703">
                                                            <data id="4698">
                                                                <property name="textAlign">left</property>
                                                                <property name="resultSetColumn">Column Binding</property>
                                                            </data>
                                                        </cell>
                                                        <cell id="4704">
                                                            <data name="Date" id="4691">
                                                                <property name="textAlign">left</property>
                                                                <property name="resultSetColumn">Date</property>
                                                            </data>
                                                        </cell>
                                                    </row>
                                                </grid>
                                            </property>
                                        </extended-item>
                                    </property>
                                </extended-item>
                            </property>
                        </extended-item>
                    </property>
                </extended-item>
            </property>
            <property name="header">
                <extended-item extensionName="CrosstabCell" id="4686">
                    <property name="content">
                        <label id="4697">
                            <property name="textAlign">left</property>
                            <text-property name="text">Date</text-property>
                        </label>
                    </property>
                </extended-item>
            </property>
            <list-property name="boundDataColumns">
                <structure>
                    <property name="name">Date</property>
                    <expression name="expression">dimension["Group"]["Date"]</expression>
                    <property name="dataType">date</property>
                </structure>
                <structure>
                    <property name="name">Amount_Group/Date</property>
                    <expression name="expression">measure["Amount"]</expression>
                    <property name="dataType">integer</property>
                    <simple-property-list name="aggregateOn">
                        <value>Group/Date</value>
                    </simple-property-list>
                    <property name="aggregateFunction">SUM</property>
                </structure>
                <structure>
                    <property name="name">Column Binding</property>
                    <text-property name="displayName">MyCounter</text-property>
                    <expression name="expression" type="javascript">myCrosstabCount++;&#13;
myCrosstabCount;</expression>
                    <property name="dataType">integer</property>
                </structure>
            </list-property>
        </extended-item>
    </body>
</report>
© www.soinside.com 2019 - 2024. All rights reserved.