w3schools transponer pasar multiples filas ejemplos con columnas sql pivot sql-server-2012 transpose

pasar - transponer filas en columnas mysql



Transponer algunas columnas a filas usando pivot con SQL (2)

Hay algunas cosas que están mal con su consulta.

Primero, te falta una función agregada en tu PIVOT. Necesita un agregado alrededor de propertyvalue .

En segundo lugar, debe rodear $row1 , etc. con corchetes, no comillas simples.

En tercer lugar, usaría un alias diferente para el as pivot

Como resultado, el código será:

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

Ver SQL Fiddle con demostración

MS SQL Server 2012

Tengo una tabla llamada indexrows

name displayname propertyvalue abc $row1 agg abc $row2 spx abc $row3 qqq def $row1 spx def $row2 qqq

Me gustaría transponer estos resultados para que se vean así.

name $row1 $row2 $row3 abc agg spx qqq def spx qqq

Probé la siguiente consulta sin éxito. Me sale este error

Msg 156, nivel 15, estado 1, línea 10 Sintaxis incorrecta cerca de la palabra clave ''para''.

select * from ( select name,propertyvalue, displayname from indexrows ) a PIVOT ( propertyvalue for [displayname] in (''$row1'', ''$row2'', ''$row3'') ) as pivot

Cualquier ayuda es apreciada.


PIVOT necesita una función agregada, porque podría tener múltiples entradas en la tabla original. Si sabe que solo tiene un valor por clave, simplemente use MIN ().

Además, ''$ row1'', ''$ row2'', ''$ row3'' ahora son columnas y deben delimitarse como columnas

select * from ( select name,propertyvalue, displayname from indexrows ) a PIVOT ( MIN(propertyvalue) for [displayname] in ([$row1], [$row2], [$row3]) ) as pivot