Convertir filas en columnas con MySQL

En este artículo vamos a ver cómo convertir filas en columnas con MySQL a partir de una consulta a la base de datos. La conversión de filas a columnas en el resultado de una consulta MySQL se conoce como transposición de datos.

Vamos a ver los pasos necesarios para realizar esta transformación con un ejemplo práctico.

Tabla MySQL con filas

Supongamos que tenemos una tabla llamada «ventas» con los siguientes datos:

idproductomescantidad
1Aenero10
2Afebrero15
3Benero20
4Bfebrero25

Ahora queremos convertir estos datos en columnas para obtener una tabla con los meses como columnas y las cantidades vendidas para cada producto en cada mes.

Los pasos necesarios que debemos realizar serian los siguientes:

  • Identificar los valores únicos de las columnas que se convertirán en las nuevas columnas. En este caso, los valores únicos de la columna «mes» son «enero» y «febrero». Estos valores serán las nuevas columnas en la tabla resultante.
  • Utilizar una combinación de agregación y condicionales para asignar los valores de las filas originales a las nuevas columnas. Podemos utilizar la función IF de MySQL para lograr esto. La función IF nos permite evaluar condiciones y asignar valores en función de ellas.
  • Construir la consulta MySQL para realizar la transposición de filas a columnas. En la consulta, utilizaremos la cláusula GROUP BY para agrupar los resultados por producto y aplicaremos la función IF para asignar los valores correspondientes a las columnas de cada mes.

Un ejemplo de consulta MySQL para transponer los datos de la tabla «ventas» sería así:

SELECT producto,
       SUM(IF(mes = 'enero', cantidad, 0)) AS enero,
       SUM(IF(mes = 'febrero', cantidad, 0)) AS febrero
FROM ventas
GROUP BY producto;

La consulta utiliza las funciones SUM y IF para asignar las cantidades correspondientes a cada mes. La condición dentro de cada IF evalúa el valor de la columna «mes» y asigna la cantidad si la condición es verdadera, en caso contrario asigna cero.

Tabla MySQL con columnas

El resultado de esta consulta será el siguiente:

productoenerofebrero
A1015
B2025

Como podemos ver, en la tabla resultante cada mes tiene su propia columna y las cantidades se agrupan por producto.

Este es un ejemplo básico de cómo convertir filas a columnas en una consulta MySQL. Ten en cuenta que la complejidad de la transposición puede aumentar dependiendo de la estructura de los datos y los requisitos específicos de la consulta.

Ahora que sabes cómo realizar la trasposición de datos y convertir las filas de tu base de datos MySQL en columnas, quizás te interese saber cómo crear una tabla temporal en MySQL con estos datos.

¡ Espero que este artículo sea de vuestro interés !

Deja un comentario