Me parece que lo que necesitas es una rotación de tablas (crosstab), pero su implementación depende del manejador de base de datos que utilices. Algunos ya tienen implementada esta funcionalidad, en otros es más complicado.
Saludos.
Por favor lee la guía de estilo