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:
id | producto | mes | cantidad |
---|---|---|---|
1 | A | enero | 10 |
2 | A | febrero | 15 |
3 | B | enero | 20 |
4 | B | febrero | 25 |
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:
producto | enero | febrero |
---|---|---|
A | 10 | 15 |
B | 20 | 25 |
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 !