Forma 2: Usar la función de pivote
Otra forma de cambiar la forma de una tabla para convertir filas en columnas en MySQL es usar la función pivot. La función pivot es una función que nos permite cambiar la forma de una tabla rotando los datos de filas a columnas o viceversa. La función de pivote se puede utilizar para transponer tablas de forma fácil y rápida.
Sin embargo, MySQL no tiene una función pivote incorporada que podamos usar directamente. Por lo tanto, necesitamos usar ciertas extensiones o complementos para agregar funciones dinámicas a MySQL. Una de las extensiones más populares y utilizadas es Flexviews. Flexviews es una extensión que proporciona funciones de pivote, anulación de dinamización y actualización incremental para MySQL. Flexviews se puede descargar e instalar desde su sitio web oficial: https://github.com/greenlion/swanhart-tools/tree/master/flexviews
Para cambiar la forma de una tabla para convertir filas en columnas mediante la función pivot, debemos seguir los siguientes pasos:
- Instale y habilite la extensión Flexviews en MySQL. Siga las instrucciones de instalación dadas en su sitio web oficial.
- Creamos una tabla temporal que contenga los datos a los que queremos dar forma. Las tablas temporales son tablas que solo existen durante una sesión de MySQL y se eliminan automáticamente cuando finaliza la sesión. Las tablas temporales se pueden crear mediante el comando CREATE TEMPORARY TABLE. Por ejemplo, podemos crear una tabla temporal con el nombre sales_temp que contenga datos de la tabla sales_table con el siguiente comando:
CREATE TEMPORARY TABLE sales_temp AS SELECT * FROM sales_table;
- Cree una vista que contenga la definición de la función dinámica que queremos usar. Una vista es un objeto de base de datos que almacena los resultados de una consulta SQL como una tabla virtual. Las vistas se pueden crear mediante el comando CREATE VIEW. Por ejemplo, podemos crear una vista con el nombre pivot_view que contenga la definición de la función dinámica para cambiar la forma de la tabla sales_temp con el siguiente comando:
CREATE VIEW pivot_view AS SELECT FV$Pivot( 'sales_temp', -- el nombre de la tabla temporal que contiene los datos 'category', -- el nombre de la columna que será la nueva fila 'month', -- el nombre de la columna que se convertirá en la nueva columna 'sales', -- el nombre de la columna que contiene el valor que se va a calcular 'SUM', -- el nombre de la función de agregación que se va a utilizar NULL -- nombres de columna adicionales para incluir en la tabla de resultados (opcional) ) AS pivot_result; -- nombre de alias para el resultado de la función pivote
- Ejecute una consulta SQL para llamar a la función dinámica de la vista que se ha creado. Las consultas SQL que podemos utilizar son las siguientes:
SELECT * FROM pivot_view;
Esta consulta generará la tabla de resultados que queremos, como se muestra arriba.