Swiss cantons by comparison 

This example shall demonstrate how to design tables so screen readers will do their work as expected. The information about the swiss cantons is read from a SharePoint list by a ContentQueryWebPart that is place in a UserControl.

Here is the sample code:
<table>
  <tr>
    <th scope="col">cantons</th>
    <th scope="col">joining</th>
    <th scope="col">habitants</th>
    <th scope="col">communes</th>
  </tr>
  <tr>
    <th scope="row">Uri</th>
    <td>1291</td>
    <td>34000</td>
    <td>20</td>
  </tr>
  <tr>
    <th scope="row">Schwyz</th>
    <td>1291</td>
    <td>110800</td>
    <td>30</td>
  </tr>
</table>

See below how it looks like.

Swiss Cantons overview
cantonsjoininghabitantscommunes
Uri12913400020
Schwyz129111080030
Obwalden1291293007
Nidwalden12913290011
Luzern1332320600107
Zürich13511157000171
Glarus13523790029
Zug13528540011
Bern1353949400412
Freiburg1481208400259
Solothurn1481226300130
Basel-Stadt15011925003
Basel-Landschaft150123080073
Schaffhausen15017190034
Appenzell Ausserrhoden15135180020