Puedes ejecutar cualquier consulta PIVOT o UNPIVOT en nuestra consola interactiva: Abrir consola SQL →
Pivot y Unpivot en SQL: transformar filas en columnas y columnas en filas
Las operaciones PIVOT y UNPIVOT permiten reorganizar datos para análisis avanzados. Son esenciales para reportes, dashboards y estructuras dinámicas.
Tabla de contenidos
1. ¿Qué es PIVOT?
PIVOT transforma filas en columnas. Ideal para reportes donde cada categoría debe ser una columna.
2. Ejemplo de PIVOT
SELECT *
FROM ventas
PIVOT (
SUM(cantidad)
FOR mes IN ('Enero', 'Febrero', 'Marzo')
);
Esto convierte los meses en columnas y muestra la suma de ventas por cada uno.
3. ¿Qué es UNPIVOT?
UNPIVOT transforma columnas en filas. Útil para normalizar datos o preparar información para análisis.
4. Ejemplo de UNPIVOT
SELECT *
FROM ventas_mensuales
UNPIVOT (
cantidad FOR mes IN (enero, febrero, marzo)
);
5. Pivot manual con CASE
SELECT
producto,
SUM(CASE WHEN mes = 'Enero' THEN cantidad ELSE 0 END) AS enero,
SUM(CASE WHEN mes = 'Febrero' THEN cantidad ELSE 0 END) AS febrero,
SUM(CASE WHEN mes = 'Marzo' THEN cantidad ELSE 0 END) AS marzo
FROM ventas
GROUP BY producto;
6. Ejercicios para practicar
- Crea un PIVOT de ventas por mes.
- Crea un UNPIVOT de columnas de meses.
- Haz un PIVOT manual con CASE.
- Convierte columnas de precios en filas.
- Explica cuándo usar UNPIVOT.
SELECT *
FROM ventas
PIVOT (SUM(cantidad) FOR mes IN ('Enero','Febrero','Marzo'));
SELECT *
FROM ventas_mensuales
UNPIVOT (cantidad FOR mes IN (enero,febrero,marzo));
SELECT producto,
SUM(CASE WHEN mes='Enero' THEN cantidad ELSE 0 END) AS enero
FROM ventas
GROUP BY producto;
SELECT *
FROM precios
UNPIVOT (valor FOR tipo IN (precio1,precio2,precio3));
-- UNPIVOT se usa para normalizar datos y convertir columnas en filas.
7. Mini‑proyecto: Reporte dinámico de ventas
SELECT *
FROM ventas
PIVOT (
SUM(cantidad)
FOR categoria IN ('Ropa','Electrónica','Hogar')
);
8. Errores comunes
- Confundir PIVOT con GROUP BY.
- Usar UNPIVOT en tablas ya normalizadas.
- Crear demasiadas columnas dinámicas.
- No validar nombres de columnas en PIVOT.
9. Preguntas frecuentes
¿PIVOT funciona en todas las bases?
Sí, aunque la sintaxis puede variar ligeramente.
¿UNPIVOT es útil para ETL?
Mucho, especialmente para normalizar datos.