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

Trasponi alcune colonne in righe usando pivot con SQL

Ci sono alcune cose che non vanno nella tua query.

Innanzitutto, ti manca una funzione aggregata sul tuo PIVOT. Hai bisogno di un aggregato attorno a propertyvalue .

In secondo luogo, devi racchiudere $row1 , etc con parentesi quadre non virgolette singole.

Terzo, userei un alias diverso per as pivot

Di conseguenza il codice sarà:

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

Vedi SQL Fiddle con demo