---
title: "Matrix reports, and when one beats a summary"
url: "https://trailassembly.com/matrix-reports/"
topic: "Reports and Analytics"
published: "2026-09-16T04:10:45+00:00"
updated: "2026-10-06T13:56:15+00:00"
---

# Matrix reports, and when one beats a summary

**A matrix report groups by rows and by columns at the same time, so each cell is a summary of the records sitting at that intersection.** Use it when the question has two dimensions and one measure. Use a summary report when it has one dimension, because a matrix with a single column grouping is just a summary report that is harder to read.

## The structure

A matrix takes up to two row groupings and up to two column groupings. Rows nest downwards, columns nest across, and every summary field you add appears in every cell.

A typical shape: stage down the side, close month across the top, sum of amount in the cells. One glance tells you where the pipeline is concentrated and when it is expected to land. The same data in a summary report grouped by stage then month reads as a long list, and the eye cannot compare months without scrolling.

## Summary fields and why cells go blank

Add a field as a summary and choose the aggregation: sum, average, maximum, minimum, or record count. Add several and each cell stacks them, which is legible for two and illegible for four.

Empty cells mean no records matched that intersection. That is not an error and there is no way to force a zero into a genuinely empty cell, because there is no row to compute from. If a matrix needs to show zeros for missing combinations, the report format cannot do it. You are looking at a snapshot object or an external tool.

## Summary formulas in a matrix

PARENTGROUPVAL behaves differently here. In a summary report it takes the summary field and one parent grouping. In a matrix it takes both a row grouping and a column grouping, because a cell has two parents and the function has to know which direction you mean.

```apex
AMOUNT:SUM / PARENTGROUPVAL(AMOUNT:SUM, STAGE_NAME, CLOSE_DATE)
```

Getting the arguments the wrong way round produces a valid formula that answers a different question, usually percentage of column when you wanted percentage of row. The numbers look plausible. Check one cell by hand against the totals before you trust the whole grid.

## When a matrix beats a summary report

Three situations, reliably:

- **Comparison across a time dimension.** Any “by month” or “by quarter” question where the other dimension is categorical. Months across the top is the natural reading order.

- **Cross-tabulation.** Owner against product, region against status, source against outcome. Anything you would build as a pivot table in a spreadsheet.

- **Feeding a stacked or grouped chart.** A matrix maps directly onto charts that need two grouping levels, and the chart builder offers more useful options when both groupings exist.

And the counter-case. If one dimension has more than about a dozen values, the matrix becomes a horizontally scrolling wall and stops being readable. Column groupings should have few values. Put the high-cardinality dimension down the side, where scrolling is normal.

## Practical constraints

The grouping cap of two in each direction is absolute. A question needing three levels down and two across does not fit, and the answer is usually to promote a value into a filter rather than fight the format.

## Performance

A matrix computes every intersection, so cost grows with the product of the grouping cardinalities rather than their sum. Twelve months by four hundred owners is 4,800 cells, each aggregating records. The underlying query is the same query a summary report would run. The extra work is in the aggregation and the render.

Whatever shape you choose, the fields available at all are fixed by the [report type](https://trailassembly.com/salesforce-report-types/), and that cannot be changed after the report exists.

## Frequently asked

**Can I export a matrix report?** A formatted export keeps the grid structure. A details-only export gives you the underlying rows with no groupings at all, which is a different file entirely and surprises people who expected the grid.

**Can a matrix report feed a reporting snapshot?** Snapshot sources have format restrictions and the matrix format is the one most likely to be rejected. Build the source as a summary or tabular report and keep the matrix as a separate presentation layer.

**Why does my chart only show one grouping?** Chart types differ in how many groupings they consume. Bar and column charts with a grouped or stacked option use both. A simple donut uses one and silently ignores the other.

**Can I swap rows and columns?** Yes, by dragging the groupings between the two areas in report builder. The summary fields stay where they are and the report reorients. It is worth trying both ways before deciding which reads better.

---

Source: https://trailassembly.com/matrix-reports/
Trail Assembly — independent Salesforce write-ups.
