It's a simple matter of setting the colspans correctly.
Table Header Row: Each Cell gets a colspan of 2 (3 Cells * 2 colspan = 6 colspan-cells).
Table Body Rows: Each Cell gets a colspan of 3 (2 Cells * 3 colspan = 6 colspan-cells).
UPDATE
There seems to be an inconsistency which involves Columns having both colspan and width set. The Browsers seem to ignore the width value and even max-width (min-width works).
Example:
<table border="1" style="width: 50%;">
<tr>
<td style="width: 100px;">td1</td>
<td colspan="2">td2</td>
<td style="width: 100px;">td3</td>
</tr>
<tr>
<th colspan="2" style="min-width: 120px; max-width: 120px; width: 120px;">th1</th>
<td colspan="2">td2</td>
</tr>
<tr>
<th colspan="2" style="min-width: 120px; max-width: 120px; width: 120px;">th1</th>
<td colspan="2">td2</td>
</tr>
</table>
This produces roughly the desired output but the th column th1 expands to match the same size of the following td (td2). Both always occupy 50% of the table unless the table is smaller than 240px, then th1 stays at 120px.
This seems inconsistent to me and i have no workaround, best is if you check if you can display the table differently (i.e. same number of columns in all rows including the header (which would make more sense anyways imho)).