Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como transpor um conjunto de resultados do SQL


É necessário usar uma função agregada se você usar PIVOT . No entanto, como seu (RespondentId, QuestionId) combinação é única, seus "grupos" terão apenas uma linha, então você pode usar MIN() como uma função 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

Se um grupo contiver apenas uma linha, MIN(value) = value , ou em outras palavras:a função agregada se torna a função identidade.