I would write a stored procedure to get the data summarized and then use CR to display it. My rule of creating data for a report is to have everything you need to display in the report on one line, so you would have everything that you want displayed in the grid, as well as everything that is in grouping information above the grid, all in 1 row of the data...from there report writing is a breeze (at least for what you are looking for). Let the DB do the work that it is good at, and let Crystal format--that's what it is good at.
HTH