sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo transponer un conjunto de resultados de SQL

Se requiere usar una función agregada si usa PIVOT . Sin embargo, dado que su (RespondentId, QuestionId) la combinación es única, sus "grupos" tendrán solo una fila, por lo que puede usar MIN() como una función agregada:

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 grupo solo contiene una fila, entonces MIN(value) = value , o en otras palabras:la función agregada se convierte en la función identidad.