Det krävs för att använda en aggregatfunktion om du använder PIVOT
. Men eftersom din (RespondentId, QuestionId)
kombinationen är unik, dina "grupper" kommer bara att ha en rad, så du kan använda MIN()
som en aggregerad funktion:
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
Om en grupp bara innehåller en rad är MIN(value) = value
, eller med andra ord:den aggregerade funktionen blir identitetsfunktionen.