Since I am having a problem that almost directly results from the solution I'm about to propose, I would advise you to be careful in using it. But I had the same problem and I solved by creating a fake table in the database:
1: create a fake table that has a field shared with your data table
2: entere a bunch of fake records that would duplicate the data from your main table when queried properly such as
0,1
0,2
1,1
1,2 etc.
3: get the data for the report using a command which links the two tables. The records should be ordered in such a way that the fake(s) would come in as the last ones in their group.
4: create a formula that would return the value of the grouping field, or the word "Average" based on the record
5: use a formula to return actual data as expected if this is a regular record, or the average that you wish to display if the record is fake
6: finally, base your crosstab on the grouping/naming formula, and the counter/average formula.
Just make sure that your running totals/averages and whatever else is cleared out properly for each crosstab.
It might take a little getting used to but the thing words fine unless you have two groups, which is where I am stuck now.
Good luck.
Max