Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Transposer certaines colonnes en lignes en utilisant pivot avec SQL

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