Principales respuestas
Sumar valores al convertir a tabla pivot en sql

Pregunta
-
Recurro a ustedes en busca de ayuda
Tengo una tabla cuyas filas requiero convertir a columas, esto ya lo hice, más sin embargo también requiero que al convertirse a columnas se sumen las cantidades en base a un dato.
Ejemplo:
Mi tabla original es muy parecida a esto
Y lo que quiero lograr es esto:
Mi código en este momento es algo así:
Con el cual solo logré agregar como columnas la pieza y kilogramo pero no sumarlas.
select*from Tabla As SourceTable Pivot(AVG([Cantidad]) FOR [Unidad] IN ([PIEZA], [KILOGRAMO])AS PivotTable;
Gracias por su ayuda.
Respuestas
-
Hola Zarpis:
La opción más simple es la trasposición.
CREATE TABLE ej (id INT, cantidad FLOAT, unidad VARCHAR(10) ); GO INSERT INTO ej (id, cantidad, unidad ) VALUES (2, 10, 'PIEZA' ), (2, 5, 'PIEZA' ), (2, 20, 'KILOGRAMO' ), (3, 5, 'PIEZA' ), (3, 2, 'KILOGRAMO' ); GO SELECT ID, SUM(CASE WHEN UNIDAD = 'PIEZA' THEN CANTIDAD END) AS 'PIEZA', SUM(CASE WHEN UNIDAD = 'KILOGRAMO' THEN CANTIDAD END) AS 'KILOGRAMO' FROM ej GROUP BY ID;
Salida
Un saludo
Todas las respuestas
-
Hola Zarpis:
La opción más simple es la trasposición.
CREATE TABLE ej (id INT, cantidad FLOAT, unidad VARCHAR(10) ); GO INSERT INTO ej (id, cantidad, unidad ) VALUES (2, 10, 'PIEZA' ), (2, 5, 'PIEZA' ), (2, 20, 'KILOGRAMO' ), (3, 5, 'PIEZA' ), (3, 2, 'KILOGRAMO' ); GO SELECT ID, SUM(CASE WHEN UNIDAD = 'PIEZA' THEN CANTIDAD END) AS 'PIEZA', SUM(CASE WHEN UNIDAD = 'KILOGRAMO' THEN CANTIDAD END) AS 'KILOGRAMO' FROM ej GROUP BY ID;
Salida
Un saludo
-