Il y a quelques éléments qui ne vont pas avec votre requête.
Tout d'abord, il vous manque une fonction d'agrégation sur votre PIVOT. Vous avez besoin d'un agrégat autour de propertyvalue
.
Deuxièmement, vous devez entourer le $row1
, etc avec des crochets et non des guillemets simples.
Troisièmement, j'utiliserais un alias différent pour le as pivot
En conséquence, le code sera :
select *
from
(
select name, propertyvalue, displayname
from indexrows
) a
pivot
(
max(propertyvalue)
for [displayname] in ([$row1], [$row2], [$row3])
) piv;
Voir SQL Fiddle avec démo