OK, setting aside the normalization issues with the dataset, as they may be unavoidable...
How do you determine which records should be in myLabel1 and myLabel2? Are I3 and I4 always null when I1 and I2 have values, and vice versa? Are c1 and c2 actually different values for each record, or are they repeated for every record?
I'm going to assume for the sake of this post that what you listed is exactly how the dataset looks, and exactly the breakout you want. I actually find it quite odd, but I'm willing to go with it.
First, you're going to need to separate the data into two groups. Since you don't have a logical field to group by in the dataset, you're going to need to create one. Create a formula, @myLabel, that looks like:
IF IsNull({Mytable.I1}) THEN "myLabel2"
ELSE
IF IsNull({Mytable.I3}) THEN "myLabel1"
ELSE
"myLabelError"Group your records on this formula field.
In the Group Header section, put your @myLabel field.
In the Details section, put Column1 and Column2. Go into the Format Field dialog on each, and select "Suppress if Duplicated." Put I1 and I2. Put I3 and I4 right on top of I1 and I2. If they really are mutually exclusive, then only the relevant data will appear. However, if there is a record with, say, a value for both I1 and I3, you will need to create a conditional suppress to only show the proper one based on the group (see below for an example).
In the Group Footer section, create summaries of all four I fields (i.e., I1, I2, I3, and I4). In each one, go into the Format Field dialog. Click on the formula button next to "Suppress." Enter a formula like this for I1 and I2:
@myLabel = "myLabel2"
For I3 and I4, use "myLabel1" instead. This will suppress the summary when the column is from the wrong group.