SQL Server - Columnas a filas

 
Vista:

Columnas a filas

Publicado por dmv (5 intervenciones) el 22/06/2015 17:58:31
Buen dia,

Estoy tratando de transponer de columnas a filas, este es mi caso

Tengo lo siguiente del resultado de una consulta:

Material Day1 Embarque Balance Day2 Embarque Balance
121234 2.65 2.80 3.59 5.63 8.96 10.25

y necesito que se refleje de la siguiente manera:

Material Day1 Day2
121234 2.65 5.63 (representa el primer renglon)
2.80 8.96 (representa el embarque)
3.59 10.25 (representa el balance)

¿Es posible realizar alguna operacion en SQL para que me muestra el resultado como lo que necesito?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Columnas a filas

Publicado por Isaias (4558 intervenciones) el 22/06/2015 19:33:22
Dependerá de la versión de SQL Server que estés manejando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Columnas a filas

Publicado por dmv (5 intervenciones) el 22/06/2015 22:16:48
Estoy trabajando con SQL SERVER 2005 pero no veo la forma de acomodar los datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 86
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Columnas a filas

Publicado por Rafael (110 intervenciones) el 23/06/2015 09:23:48
Aqui una idea:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT Material
     , VAL1
	 , VAL2
FROM   (SELECT Material
             , Day1
             , Embarque1
             , Balance1
             , Day2
             , Embarque2
             , Balance2
        FROM   TABLA) AS T1
UNPIVOT (VAL1 FOR VAL1X IN (Day1, Embarque1, Balance1) ) AS U1
UNPIVOT (VAL2 FOR VAL2X IN (Day2, Embarque2, Balance2) ) AS U1
WHERE LEFT(VAL1X,1) = LEFT(VAL2X,1)

Dependera de la version del SQL Server para ver si tiene o no incorporada la funcionalidad...
De otro modo necesitas tres consultas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT Material
	 , Day1
	 , Day2
FROM   TABLA
UNION
SELECT Material
	 , Embarque1
	 , Embarque2
FROM   TABLA
UNION
SELECT Material
	 , Balance1
	 , Balance2
FROM   TABLA
ORDER BY MATERIAL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar