table Source:SQL Server PIVOT aide
Create Table ExamAnswers
{
StudentID varchar(12),
QuestionID int,
Answer char(1)
}
et ce sera rempli de
Bob 1 a
Bob 2 c
...
Bob 100 b
Chris 1 c
Chris 2 d
...
Chris 100 null
etc, pour environ 500 étudiants.
Chris n'a pas terminé l'examen, mais la 100ème question est stockée comme nulle, donc il est garanti que chaque étudiant a exactement 100 lignes, mais la réponse réelle est nulle ou de caractère.
Si cela fait une différence, les réponses sont {a, b, c, d, e, f}
Cette configuration fonctionne très bien pour l'application de l'examen réel, et le poinçonnement il est trivial.
Maintenant, j'ai une obligation de déclaration, que, aux fins de vérification, je dois produire une table qui ressemble à ceci:
ID 1 2 ... 100
Bob a c ... b
Chris c d ....null
J'ai donc passé une demi-journée de lecture sur la fonction PIVOT, et je viens de don ne comprends pas.
Cela doit être la documentation la plus impénétrable que j'ai jamais lu. D'une part, il exige et fonction d'agrégat - Que diable suis-je censé agréger ici? Je pense qu'il s'agit de l'utilisation la plus simple possible de la fonction PIVOT, et je ne trouve aucun exemple décent nulle part. AIDEZ-MOI!
Réponse EST une lettre. Ce n'est pas un int. Je ne peux pas AVG une lettre. Je ne peux pas SUM un, je ne veux pas un compte. Si la lettre est «a», j'aimerais voir «a». Pourquoi est-ce si difficile? –
clause pivot requise fonction d'agrégation, mais les fonctions d'agrégation (mais COUNT(), dont vous n'avez pas besoin) ne fonctionnent que pour les types de données numériques. –
Ok, vous m'avez fait aller dans la bonne direction, La solution est d'utiliser MAX ou MIN dans ce cas. –