Personally, I would use a stored proc, put the logic in there to do the matching or to use a middle tier in an application to create the datatable that would be used in the report.
Barring that, the next idea is to use subreports, as they will read the data again. If all the data is in 1 row, the subreport wouldn't be needed, just the logic determine what prints when.
If the data looks the sample, an approach might be to use SPLIT() and put it into an array....If the data looks sample, you will probably want to use subreports as you have multiple lines of the report being displayed for a single line of data, which CR will not do without being forced/tricked
HTH