ORDER BY section in REPORT
Forces a sort order of unsorted data rows in reports.
Syntax
ORDER [ EXTERNAL ] BY report-variable [ DESC | ASC ] [,...]
- report-variable identifies one of the variables passed to the report routine to be used for sorting rows.
Usage
When grouping rows in a report, values that the report definition receives from the
report driver are significant in determining how BEFORE GROUP OF/AFTER GROUP OF
control blocks will process the data in the formatted report output.
The ORDER BY
section defines how
the variables of the input records are to be sorted.
It is required if the report driver does not send sorted data to the
report. The specified sort order determines the order
in which the runtime system processes any GROUP
OF
control blocks in the FORMAT
section.
If
you omit the ORDER BY
section, the runtime system
processes input records in the order received from
the report driver and processes any GROUP
OF
control blocks in their order of appearance in the
FORMAT
section. If records are
not sorted in the report driver , the GROUP
OF
control blocks might be executed at random intervals
(that is, after any input record) because unsorted
values tend to change from record to record.
If
you specify only one variable in the GROUP OF
control blocks, and the input records are already sorted
in sequence on that variable by the SELECT
statement,
you do not need to include an ORDER BY
section
in the report.
Specify ORDER EXTERNAL
BY
if the input records have already been sorted by the
SELECT
statement used by the report
driver. The list of variables after the keywords ORDER
EXTERNAL BY
control the execution order of GROUP
BY
control blocks.
Without the EXTERNAL
keyword, the report becomes a two-pass report, meaning that
the report engine processes the set of input records twice. During the first pass, the report engine
sorts the data and stores the sorted values in a temporary table in the database. During the second
pass, it calculates any aggregate values and produces output from data in the temporary files.
With the EXTERNAL
keyword, the report engine only needs to make a single pass
through the data: it does not need to build the temporary table in the database for sorting the
data. However, If the report routine contains aggregations functions such as GROUP PERCENT(*)
, the report will become a
two-pass report because such aggregation function needs all rows to compute the value.
The DESC
or ASC
clause
defines the sort order.