Todo depende de qué DBMS estés usando...
MySQL no cuenta con sentencias especiales para hacer un listado como el que quieres. En ese caso hay que implementarlo de otra forma, a veces con el uso de funciones, a veces con JOINS, dependiendo de qué tablas y qué datos se usen.
SQL Server a partir de su versión 2005 implementó mejor una opción específica para el caso que quieres. Puedes ver un
tutorial sobre PIVOT en El Guille que habla del tema.
Oracle también tiene una implementación de PIVOT, que
puedes ver en algunos tutoriales.