Il est nécessaire d'utiliser une fonction d'agrégation si vous utilisez PIVOT
. Cependant, puisque votre (RespondentId, QuestionId)
combinaison est unique, vos "groupes" n'auront qu'une seule ligne, vous pouvez donc utiliser MIN()
en tant que fonction d'agrégat :
SELECT RespondentId, CanBathe, TimesADay, SoapPrice
FROM (SELECT RespondentId, ColumnName, AnswerValue FROM MyTable) AS src
PIVOT (MIN(AnswerValue) FOR ColumnName IN(CanBathe, TimesADay, SoapPrice)) AS pvt
Si un groupe ne contient qu'une seule ligne, alors MIN(value) = value
, ou en d'autres termes :la fonction d'agrégation devient la fonction d'identité.