w3schools transponer pasar multiples filas fechas ejemplos ejemplo con columnas sql sql-server sql-server-2008 pivot transpose

transponer - SQL: Real Transpose



pivot sql w3schools (1)

No estoy seguro de por qué crees que no puedes lograr esto con un UNPIVOT y un PIVOT :

select [1], [2], [3], [4], [5] from ( select * from ( select col1, col2, col3, row_number() over(order by col1) rn from yourtable ) x unpivot ( val for col in (col1, col2, col3) ) u ) x1 pivot ( max(val) for rn in ([1], [2], [3], [4], [5]) ) p

Ver SQL Fiddle con demostración . Esto también podría realizarse dinámicamente si es necesario.

Editar, si se debe mantener el orden de las columnas, puede usar algo como esto, que aplica row_number() sin usar una order by una de las columnas en su tabla (aquí hay un artículo sobre el uso de números de fila no deterministas )

select [1], [2], [3], [4], [5] from ( select * from ( select col1, col2, col3, row_number() over(order by (select 1)) rn from yourtable ) x unpivot ( val for col in (col1, col2, col3) ) u ) x1 pivot ( max(val) for rn in ([1], [2], [3], [4], [5]) ) p;

Ver SQL Fiddle con demostración

Sé sobre pivote y unpivot. Eso no es lo que quiero. Pivote y datos agregados de unpivot, pero eso no es lo que quiero.

Piense en una tabla como una matriz (álgebra lineal). Si comienzo con una matriz mxn, quiero convertir esa matriz (tabla) en una matriz nxm. Quiero un verdadero TRANSPOSE .

¿Cómo puedo hacer esto en SQL?

Por ejemplo si tengo:

1 2 3 1 2 4 6 7 8 3 2 1 3 9 1

entonces el resultado debería ser:

1 1 6 3 3 2 2 7 2 9 3 4 8 1 1

Tenga en cuenta que el número de filas se convierte en el número de columnas, y viceversa. También tenga en cuenta que no he agrupado ni agregado ninguno de los datos. Cada valor individual presente en la fuente está presente en el resultado, y sus coordenadas xy han sido intercambiadas.