È necessario utilizzare una funzione aggregata se si utilizza PIVOT
. Tuttavia, poiché il tuo (RespondentId, QuestionId)
la combinazione è unica, i tuoi "gruppi" avranno solo una riga, quindi puoi usare MIN()
come funzione aggregata:
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 un gruppo contiene solo una riga, allora MIN(value) = value
, ovvero:la funzione di aggregazione diventa la funzione di identità.