Using Crosstab Formulas
Crosstab formulas are a type of extended formulas that you can apply in crosstabs using query resources. By using crosstab formulas, you can create custom aggregate functions in a crosstab to get the desired results. This topic introduces the syntax of crosstab formulas and how you can create and manage crosstab formulas in your crosstabs.
Crosstab formulas are private resources on the crosstab level, which means you cannot use them beyond its crosstab.
This topic contains the following sections:
- Crosstab Formula Syntax
- Using Crosstab Formulas to Apply Custom Aggregate Functions
- Managing Crosstab Formulas
To support more powerful and flexible calculation logic in crosstabs, crosstab formula extends the basic formula syntax in the following aspects:
- A crosstab formula can reference another crosstab formula within the same crosstab. The format is
@@<Crosstab_Formula_Name>, for example,
@@CTF1, here CTF1 is a crosstab formula name. In this case, you can write the crosstab formula as
- A crosstab formula can reference summary expression which follows the syntax of custom aggregation expression. The following shows some summary expression examples:
The following example shows how to apply custom aggregate function in a crosstab by creating a crosstab formula:
- Make sure SampleReports.cat is the currently open catalog file. If not, select File > Open Catalog to open it from
- Select File > New > Page Report.
- In the Select Component for Page Report dialog box, select Crosstab and select OK. Designer displays the Crosstab Wizard dialog box.
- In the Data screen, select the query WorldWideSales in Data Source 1 of the catalog.
- In the Display screen, add Country as the row field and Region as the column field.
- In the Resources box, select <New Crosstab Formula...> in the Crosstab Formulas node .
- In the Enter Crosstab Formula Name dialog box, type CustomAgg and select OK. Designer displays the Crosstab Formula Editor dialog box.
- Define the formula as follows:
currency ctsv1 = @(Sum(@Price));
currency ctsv2 = @(@Country:ALL,@Region:ALL,Sum(@Price));
- Save the crosstab formula and add it to the Summaries box as the aggregate field. You can find that Designer shows Custom as the aggregate function of the aggregate field and you cannot edit the function.
- Switch to the Style screen and select Classic as the report style.
- Select Finish to create the crosstab and preview it. Designer displays the crosstab somewhat as follows:
You can see that in the aggregate cell, based on the formula expression, the crosstab shows "N/A" if the price value equals to or is less than 5‰ of the grand total price "$16,337.85"; the crosstab displays the actual price if the price is more than 5‰ of the grand total price.
You can manage the crosstab formulas of a crosstab under the Crosstab Formulas node in the Data panel as follows:
- Creating crosstab formulas
Select <New Crosstab Formula...>, type a name for the crosstab formula in the Enter Crosstab Formula Name dialog box and select OK, then in the Crosstab Formula Editor dialog box, compose the formula as required. You can then insert the crosstab formula as aggregate field to the crosstab or use it to control the properties of objects in the crosstab.
- Editing a crosstab formula
Select the crosstab formula, then right-click it and select Edit Formula on the shortcut menu. In the Crosstab Formula Editor dialog box, edit the formula expression as required.
- Deleting a crosstab formula
Right-click the crosstab formula and select Delete from the shortcut menu.
- Renaming a crosstab formula
Right-click the crosstab formula and select Rename from the shortcut menu. Type a new name in the Enter Crosstab Formula Name dialog box and select OK to confirm the change.
- Viewing properties of a crosstab formula
Right-click the crosstab formula and select Properties. Designer then lists its properties in the Properties dialog box.
- You can only use crosstab formulas as the aggregate fields in a crosstab.
- Crosstab formulas do not support global variables.
- Crosstab formulas cannot reference detail fields and record level pass one formulas, except for referencing them in summary expression.
- You cannot use the Array functions as
array_function (field_variable, groupby)in crosstab formulas (array_function here refers to any Array function defined in Designer). For example, Designer does not allow
Average(@formula, @parameter)in crosstab formulas.