Jest kilka rzeczy, które są niepoprawne w Twoim zapytaniu.
Po pierwsze, brakuje Ci funkcji agregującej w swoim PIVOT. Potrzebujesz agregatu wokół propertyvalue
.
Po drugie, musisz otoczyć $row1
itp. z nawiasami kwadratowymi, a nie pojedynczymi cudzysłowami.
Po trzecie, użyłbym innego aliasu dla as pivot
W rezultacie kod będzie wyglądał następująco:
select *
from
(
select name, propertyvalue, displayname
from indexrows
) a
pivot
(
max(propertyvalue)
for [displayname] in ([$row1], [$row2], [$row3])
) piv;
Zobacz SQL Fiddle z wersją demonstracyjną