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

Transponieren Sie einige Spalten mithilfe von Pivot mit SQL in Zeilen

An Ihrer Abfrage sind einige Dinge falsch.

Erstens fehlt Ihnen eine Aggregatfunktion auf Ihrem PIVOT. Sie benötigen ein Aggregat um propertyvalue .

Zweitens müssen Sie $row1 umschließen , etc mit eckigen Klammern, nicht einfachen Anführungszeichen.

Drittens würde ich einen anderen Alias ​​für as pivot verwenden

Als Ergebnis lautet der Code:

select * 
from 
(
  select name, propertyvalue, displayname
  from indexrows
) a
pivot
(
  max(propertyvalue)
  for [displayname] in ([$row1], [$row2], [$row3])
) piv;

Siehe SQL Fiddle mit Demo