Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come trasporre un set di risultati da SQL

È 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à.