Crear dinámicamente columnas sql

Tengo una mesa de clientes

Customer ID        Name         
   1               John        
   2               Lewis        
   3               Mary         

Tengo otra mesa CustomerRewards

 TypeID           Description
   1                Bronze
   2                Silver
   3                Gold
   4               Platinum
   5               AnotherOne

Y la mesa final

 RewardID          TypeID          CustomerID
    1                1                 1
    2                1                 1
    3                2                 1
    4                2                 2

La tabla customerTypes es dinámica, muchos de estos tipos se pueden agregar y eliminar. Básicamente, todo lo que quiero es que las columnas se generen dinámicamente y una cuenta en cada una, algo así como

CustomerName        Bronze        Silver     Gold      Platinum     AnotherOne    total
   John               2             1         0           0             0           3
   Lewis              0             1         0           0             0           1
 Grand TOTAL          2             2         0           0             0           4

El problema, como lo dije, es que los tipos son dinámicos y los clientes son dinámicos, así que necesito que las columnas sean dinámicas dependiendo de los tipos en el sistema.

He etiquetado c # ya que necesito esto en un DataGridView

Gracias por adelantado

Respuestas a la pregunta(1)

Su respuesta a la pregunta