Skip Headers
Oracle® Reports Building Reports
10g Release 2 (10.1.2)
  Go To Documentation Library
Go To Product List
Go To Table Of Contents
Go To Index


30 Building a Report with Aggregate Data

In this chapter, you will learn about reports that include aggregate data, based on value ranges. By following the steps in this chapter, you can generate the report output shown in Figure 30-1.

Figure 30-1 Aggregate data report output

Description of Figure 30-1  follows
Description of "Figure 30-1 Aggregate data report output"


In a report that aggregates, or collects, data within ranges, values from the database are retrieved and formatted based on an aggregate range that you define. You can even use parameters to specify the range over which the data should be collected.

Data Relationships

This report uses two "functions" in its SELECT statement to specify the aggregate range. The functions are (FLOOR(SAL/1000))*1000), which calculates the lowest salary, and (CEIL*((SAL+1)/1000) * 1000), which calculates the highest salary. The columns that receive the values of these functions are placed into a break group to produce the control break format of this example report.


This report uses the Group Left layout style.

Example Scenario

In this example, you will build both a paper and JSP-based Web report that collects and displays names of all employees whose salaries fall within the range of 0 to 999, then collects and displays all employees whose salaries fall within the range of 1000 to 1999, and so on. You will be able to modify this report to display any aggregate range you need.

As you build this example report, you will:

To see a sample report that aggregates data within ranges, open the examples folder named aggregatingdata, then open the Oracle Reports example named aggregatingdata.rdf. For details on how to open it, see "Accessing the Example Reports" in the Preface.

30.1 Prerequisites for this example

To build the example in this chapter, you must have access to the SCOTT sample schema provided with the Oracle Database. If you do not know if you have access to this sample schema, contact your database administrator.

30.2 Create a query and the layout

The steps in this section will show you how to build a simple data model and report layout in the Report Wizard, which you can then use to generate either a JSP-based Web report or a paper report. In the next section, you will modify the JSP so that the appropriate information displays in your Web report.

When you are creating a single-query report, such as this one, you can use the Report Wizard to create the data model and layout simultaneously.

To create a data model and layout:

  1. Launch Reports Builder (or, if already open, choose File > New > Report).

  2. In the Welcome or New Report dialog box, select Use the Report Wizard, then click OK.

  3. If the Welcome page displays, click Next.

  4. On the Report Type page, select Create both Web and Paper Layout, then click Next.

  5. On the Style page, type a Title for your report, select Group Left, then click Next.

  6. On the Data Source page, click SQL Query, then click Next.

  7. On the Data page, enter the following SELECT statement in the Data Source definition field:

    SELECT (FLOOR(SAL/1000))*1000 BOTTOM,
    CEIL((SAL+1)/1000) * 1000 TOP,
    ORDER BY 1,2, SAL


    You can enter this query in any of the following ways:
    • Copy and paste the code from the provided text file called aggregatingdata_code.txt into the Data Source definition field.

    • Click Query Builder to build the query without entering any code manually.

    • Type the code in the Data Source definition field.

  8. Click Next.


    If you are not already connected to a database, you will be prompted to connect to the database when you click Query Builder or Next. Ensure that you connect to a database that has the appropriate schema for this example. Section 30.1, "Prerequisites for this example" describes the sample schema requirements for this example.

  9. On the Groups page, click the following fields in the Available Fields list and click the right arrow (>) to move them to the Group Fields list, then click Next:

    • BOTTOM

    • TOP

  10. On the Fields page, click the double right arrows (>>) to move all of the fields to the Displayed Fields list, then click Next.

  11. On the Totals page, click Next.

  12. On the Labels page, click Next.

  13. On the Template page, select Predefined Template and click Beige, then click Finish to display your report output in the Paper Design view. It should look something like this:

    Figure 30-2 Paper Design view for the aggregating data report

    Description of Figure 30-2  follows
    Description of "Figure 30-2 Paper Design view for the aggregating data report"

  14. In the Paper Design view, click the text Bottom and change the text to Salary Range.

  15. Delete the text Top.


    You can also modify the other column headers to make the text more meaningful.

  16. Click the Paper Layout button in the toolbar to display the Paper Layout view. The layout currently looks like this:

    Figure 30-3 Paper Layout view of the Aggregating Data report

    Description of Figure 30-3  follows
    Description of "Figure 30-3 Paper Layout view of the Aggregating Data report"

  17. In the Paper Layout view, click the Flex Off button in the toolbar to set Flex mode off.

  18. Click the right edge of the f_bottom frame and drag it to the left about 0.5 inches (1.5 centimeters) to make room between the f_bottom and f_top fields.


    To find objects in the Paper Layout view, you can use the Object Navigator. When you click an item name in the Object Navigator, the corresponding object is selected in the Paper Layout view.

  19. Click the Text tool in the tool palette.

  20. Drag a boilerplate text object between f_bottom and f_top, then type "-" in the text box. The layout should now look like this:

    Figure 30-4 Paper Layout view with new boilerplate text

    Description of Figure 30-4  follows
    Description of "Figure 30-4 Paper Layout view with new boilerplate text"

  21. Now, click the Run Paper Layout button in the toolbar to display your report. It should look something like this.

    Figure 30-5 Paper Design view

    Description of Figure 30-5  follows
    Description of "Figure 30-5 Paper Design view "


    Notice how the report displays the employee names per salary range, hence aggregating the data.

  22. Save your report as aggregatereport_your_initials.rdf.

  23. Take a look at the data model of your report. You can use this data model to generate either a paper report or a JSP-based Web report. To view the data model, click the Data Model button in the toolbar. Your data model should look something like this:

    Figure 30-6 Data Model for the aggregating data report

    Description of Figure 30-6  follows
    Description of "Figure 30-6 Data Model for the aggregating data report"

30.3 Modify the Web source of your JSP report

Now that you have created your paper report layout, you will now learn how to take the same report and generate a JSP-based Web report that looks the same as your paper report.

To modify your JSP-based Web report:

  1. Save your report, aggregatereport_your_initials.rdf as a JSP under the same name (aggregatereport_your_initials.jsp).

  2. Click the Web Source button in the toolbar to display the Web Source view.

    In the Web Source, you need to change the column titles to match those of the paper report.

  3. In the Web Source view, find the text:

    <th <rw:id id="HBbottom" asArray="no"/> class="OraColumnHeader"> Bottom </th>


    Choose Edit > Find and Replace, then type "bottom" in the Find what text box.

  4. Change the column header to "Salary" so that the line now looks like this:

    <th <rw:id id="HBbottom" asArray="no"/> class="OraColumnHeader"> Salary </th>
  5. The next line of code indicates the header for the "Top" column. Delete the header text so that the line looks like this:

    <th <rw:id id="HBtop" asArray="no"/> class="OraColumnHeader">  </th>
  6. Change the other two columns for Ename and Deptno as desired. For example, we changed them to "Name" and "Dept", like so:

    <th <rw:id id="HBename" asArray="no"/> class="OraColumnHeader"> Name </th>
    <th <rw:id id="HBdeptno" asArray="no"/> class="OraColumnHeader"> Dept </th>
  7. Save your report as a JSP.

  8. Click the Run Web Layout button in the toolbar to display your new JSP-based Web Report in your browser.


    • If Netscape 7.0 is your default browser, and the browser does not display, set the registry key HKEY_CURRENT_USERS\Software\Oracle\Toolkit\Tkbrowser to the default browser location. Ensure that the BrowserName and the BrowserPath keys reflect the correct values. For example: BrowserName=Netscape 7; BrowserPath=C:\Program Files\Netscape\Netscape\Netscp.exe.

    • If Run Web Layout fails with an error related to the major.minor version, you will need to update the environment variables CLASSPATH or REPORTS_CLASSPATH, as follows: remove the 9.0.x ORACLE_HOME specification in the oc4j.jar file path (the oc4j.jar file path should specify only the 10g Release 2 (10.1.2) ORACLE_HOME).

    The report should look something like this:

    Figure 30-7 Aggregating Data JSP-based Web Report

    Description of Figure 30-7  follows
    Description of "Figure 30-7 Aggregating Data JSP-based Web Report"

    The report displays, in Web format, the aggregate data you specified. Here, you can see which employees fall into the specified salary ranges.


    For information on creating a Parameter Form for a JSP-based Web report, refer to the documented example on the Oracle Technology Network (OTN): on the Oracle Reports 10g page (, click Getting Started to display the Getting Started with Oracle Reports home page. In the list of topic sections on the left, click Index. In the Collateral Type list, choose Examples, and click Search. In the list of examples that displays, click Building a JSP-based Web Report with a Parameter Form.

30.4 Summary

Congratulations! You have successfully built a report that aggregates data, for both paper and Web. You now know how to:

For more information on any of the wizards, views, or properties used in this example, refer to the Oracle Reports online Help, which is available in Reports Builder or hosted on the Oracle Technology Network (OTN), as described in Section 3.1.1, "Using the Oracle Reports online Help".