The code for a table with 2 levels of row headers is not attractive and i would suggest reformulating the source file. A Crosstable can take care of 1 level of row headers easily, but 2 is ... not that attractive.
Also , you will need to populate the missing (empty) values for the first column as well the the row headers. The first column can easily be filled using a 'Fill' step in a transformation with the load wizard , but doing a fill on the missing row header values as part of a crosstable is also a bit much in my honest opinion. I just think you would end up with code that either isn't dynamic or its just looks complex and only yourself will understand or a someone else well versed with the product which shouldn't (ideally) be the goal.