at first glance this is going to be brutal.
you are running the subreport in group level in the main report.
Each time it runs (once per instance of a group) it is an independent report and the previosu runs have no connection to it. That is why your grouping is 'not working'.
you would have to pass variable from the sub report to the main report back into the sub report and supress on that. You would also have to make it an array that keep sadding values to itself and then using a like or instring to compare the next subreport to it.
very unpleasant process.
Do you really have to use a sub report here?