Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment transposer un jeu de résultats à partir de SQL

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é.