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