To Group and Aggregate Records in Traditional BQL
You construct business query language (BQL) statements that group and aggregate records by using the Aggregate clause in one of the PXSelect classes that has the Aggregate type parameter. (For more information on selecting the PXSelect class, see To Select Records By Using Traditional BQL.)
To Group and Aggregate Records
- Specify all grouping conditions (the GroupBy clause) and
aggregation functions (such as Min, Max,
Sum, Avg, and
Count) in the Aggregate clause, as shown
in the following sample BQL statement. Fields specified in
GroupBy clauses are selected as is; an aggregation
function is applied to all other fields. The default Max
function is used if no function is specified for a field. If a data field has
the PXDBScalar attribute, NULL is inserted for that
field.
PXSelectGroupBy<Product, Aggregate<GroupBy<Product.categoryCD>>>
Note: MYOB Acumatica Framework translates the previous BQL statement to the following SQL query.SELECT Product.CategoryCD, [MAX(Field) for other fields] FROM Product GROUP BY Product.CategoryCD
- If necessary, insert another GroupBy clause or aggregation
function as the second type parameter of the previous GroupBy
clause or aggregation function, as shown in the following sample BQL
statement.
PXSelectGroupBy<Product, Aggregate<GroupBy<Product.categoryCD, Sum<Product.availQty, Sum<Product.bookedQty, GroupBy<Product.stockUnit, Min<Product.unitPrice>>>>>>>
Note: MYOB Acumatica Framework translates the previous BQL statement to the following SQL query.SELECT Product.CategoryCD, Product.StockUnit, SUM(Product.AvailQty), SUM(Product.AvailQty), MIN(Product.UnitPrice), [MAX(Field) for other fields] FROM Product GROUP BY Product.CategoryCD, Product.StockUnit