Pivotar filas a columnas
Parte de la sección Más allá de lo básico del Journey de SQL de Coddy — lección 14 de 27.
Combina la agregación condicional con GROUP BY para convertir filas en columnas. Es la versión SQL de una tabla dinámica de hoja de cálculo.
Supongamos que sales tiene filas como (month, product, units). Para ver una fila por mes con una columna por producto:
SELECT
month,
SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY monthEl GROUP BY que cada SUM(CASE …) ve son las filas de un mes; el CASE selecciona la porción para un producto.
Desafío
FácilTablas y columnas disponibles:
<strong>sales</strong>:<strong>month</strong>,<strong>product</strong>,<strong>units</strong>
Pivota los datos para que cada fila sea un month con estas columnas:
monthapples:unitstotales para el producto'apples'ese mesbananas: lo mismo para'bananas'cherries: lo mismo para'cherries'total:unitstotales de todos los productos ese mes
Devuelve solo los meses cuyo total sea al menos 20. Ordena por month.
Hoja de referencia
Usa la agregación condicional con GROUP BY para pivotar filas en columnas:
SELECT
month,
SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b,
SUM(units) AS total
FROM sales
GROUP BY month
HAVING SUM(units) >= threshold
ORDER BY monthCada SUM(CASE …) suma solo las filas que coinciden con ese producto dentro de cada grupo de GROUP BY.
Pruébalo tú mismo
SELECT month,
-- un SUM(CASE ...) por producto, más el total
FROM sales
GROUP BY month
-- filtrar por meses con total >= 20
ORDER BY month
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Más allá de lo básico
3Agregación condicional
COUNT con CASESUM con CASEPivotar filas a columnasResumen - Fuentes de tráfico