Menu
Coddy logo textTech

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 month

El GROUP BY que cada SUM(CASE …) ve son las filas de un mes; el CASE selecciona la porción para un producto.

challenge icon

Desafío

Fácil

Tablas 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:

  • month
  • apples: units totales para el producto 'apples' ese mes
  • bananas: lo mismo para 'bananas'
  • cherries: lo mismo para 'cherries'
  • total: units totales 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 month

Cada 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
quiz iconPonte a prueba

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