Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So transponieren Sie eine Ergebnismenge aus SQL

Es ist erforderlich, eine Aggregatfunktion zu verwenden, wenn Sie PIVOT verwenden . Da jedoch Ihre (RespondentId, QuestionId) Kombination einzigartig ist, haben Ihre "Gruppen" nur eine Zeile, also können Sie MIN() verwenden als Aggregatfunktion:

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

Wenn eine Gruppe nur eine Zeile enthält, dann ist MIN(value) = value , oder anders gesagt:Die Aggregatfunktion wird zur Identitätsfunktion.