Not verified hands-on. This article was written from primary documentation rather than reproduced in an org, so it carries no tested-release badge. If you run it and something differs, say so in the comments and it gets tested and corrected.

A joined report puts up to five independent report blocks side by side, aligned on fields they have in common. It is the only way to show Opportunities and Cases in one result without a custom report type that joins them, and it is the wrong answer far more often than people think. Most requests that sound like a joined report are better served by one report type, or by two components on a dashboard.

How the format actually works

A joined report is not a join in the database sense. Each block runs its own query against its own report type, with its own filters and its own columns. Salesforce then lines the blocks up against shared groupings and renders them next to each other.

That distinction explains most of the behaviour. Blocks do not filter each other. A row in block one does not require a matching row in block two. Totals in one block are computed from that block alone.

The principal report type

The first block you add sets the principal report type, and it decides which fields are available as common fields for grouping across blocks. You cannot change it afterwards without starting again, which makes it the same kind of one-way decision as picking object A in a custom report type.

Common fields are the ones the principal report type shares with the other blocks, and they are the only fields you can group the whole report by. If Account Name is not a common field, you cannot align the blocks on account, and the joined report will not do what you built it for.

What you can do

  • Up to five blocks, each with its own report type, filters, columns and sort.
  • Group the whole report by common fields, up to the usual grouping depth.
  • Summarise fields per block, with subtotals and grand totals per block.
  • Add a chart, which is what makes the report usable on a dashboard.
  • Write cross-block custom summary formulas, so a figure from one block can be divided by a figure from another. This is the genuinely unique capability.

That last point is worth dwelling on. A cross-block formula is the only supported way to compute a ratio between two different objects in a standard report. Cases per open opportunity, cost per closed deal, activity count against pipeline. If that is the requirement, a joined report is the right tool and nothing else in reports comes close.

What you cannot do

The restrictions are real and they accumulate:

  • A joined report cannot be the source of a reporting snapshot.
  • Row-level formulas are not available.
  • Cross filters are not available inside blocks.
  • Feature support varies by block and has shifted between releases, so verify anything you are depending on in your own org rather than trusting a blog post.

When a joined report is the wrong answer

“I need fields from two objects in one row.” That is a custom report type, not a joined report. Blocks sit beside each other. They do not merge into one row. If you want one row containing an opportunity field and a case field, you need a report type that joins those objects, and if the relationship does not exist, no report format invents it.

“I want to compare this year to last year.” A joined report with two date-filtered blocks does work. A summary report grouped by year with PREVGROUPVAL usually works better, stays exportable, and can feed a snapshot.

“I want everything on one screen.” That is a dashboard. Two components, two reports, each independently useful and independently subscribable. Joined reports are harder to maintain than two ordinary reports, and the maintenance cost is paid by whoever inherits your org.

Frequently asked

Can I put a joined report on a dashboard? Yes, provided it has a chart. The chart is the component. The block tables are not rendered.

Can I convert a joined report back to a summary report? You can switch report format, but blocks beyond the first are discarded and the cross-block formulas go with them. Copy the report before experimenting.

Do blocks share filters? Only the standard filters that apply to the whole report. Field filters are per block, which is exactly what makes the format useful and also what makes two blocks silently disagree when someone edits one of them.

Why do my blocks not line up? The grouping field is not truly common. Two fields with the same label on different objects are not the same field, and the report aligns on the common field definition rather than on the label.