Since all reporting tools display groups as a/b/c, not a/b a/c the subreport is one way to go, and rather logical.
I was going to say to create a formula that would display both b/c, but it won't work, as what CR really needs is 2x the data for what you want to happen...it only reads a data row once, but you are looking to have it read twice (the subreport accomplishes this for you)
If you are using a stored proc, you could create a column in the return set for the grouping value and then fill it in using selects (you would have 2x the amount of data as the original dataset, which may or may not work the aggregate functions in the report)
Depending on how the report is formatted, it might be easier to stay with the subreport. While I try not to use them, as they result in slower reports and more hits the database (unless you pushing the data to the report), they do have their place.
HTH