Pivot do SQL Server 2005 em número desconhecido de colunas

Estou trabalhando com um conjunto de dados que se parece com o seguinte.

StudentName  | AssignmentName |  Grade
---------------------------------------
StudentA     | Assignment 1   | 100
StudentA     | Assignment 2   | 80
StudentA     | Total          | 180
StudentB     | Assignment 1   | 100
StudentB     | Assignment 2   | 80
StudentB     | Assignment 3   | 100
StudentB     | Total          | 280

O nome e o número de tarefas são dinâmicos. Preciso obter resultados semelhantes aos seguintes.

Student      | Assignment 1  | Assignment 2  | Assignment 3  | Total
--------------------------------------------------------------------
Student A    | 100           | 80            | null          | 180
Student B    | 100           | 80            | 100           | 280

Agora, idealmente, eu gostaria de classificar a coluna com base em uma "data de vencimento" que possa ser incluída / associada a cada tarefa. O total deve estar no final, se possível (pode ser calculado e removido da consulta, se possível).

Eu sei como fazê-lo para as três atribuições usando o pivô, simplesmente nomeando as colunas; ele está tentando fazê-lo de uma maneira dinâmica que ainda não encontrei uma solução BOA. Estou tentando fazer isso no SQL Server 2005

EDITAR

Idealmente, eu gostaria de implementar isso SEM usar Dynamic SQL, pois isso é contra a política. Se não for possível ..., um exemplo de trabalho com o SQL dinâmico funcionará.

questionAnswers(7)

yourAnswerToTheQuestion