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