Cómo cambiar la forma de la tabla para convertir filas en columnas en MySQL

Forma 3: Uso de las funciones Unpivot y Pivot

La tercera forma de cambiar la forma de una tabla para convertir filas en columnas en MySQL es usar las funciones unpivot y pivot. La función de anulación de dinamización es la función opuesta a la función de dinamización, que cambia la forma de la tabla rotando los datos de las columnas a las filas. La función de anulación de dinamización se puede utilizar para transponer tablas de forma más flexible y dinámica.

Sin embargo, MySQL tampoco tiene una función de anulación de dinamización incorporada que podamos usar directamente. Por lo tanto, también necesitamos usar ciertas extensiones o complementos para agregar la funcionalidad de despivote a MySQL. Una de las extensiones más populares y utilizadas es la Flexviews que hemos comentado anteriormente. Flexviews proporciona una función de anulación de dinamización además de funciones de dinamización e incremental para MySQL.

Para cambiar la forma de la tabla para convertir filas en columnas mediante las funciones unpivot y pivot, debemos seguir los siguientes pasos:

  • Instale y habilite la extensión Flexviews en MySQL si no se ha hecho antes. Siga las instrucciones de instalación dadas en su sitio web oficial
  • Cree una tabla temporal que contenga los datos a los que queremos dar forma, si aún no existían antes. 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 de anulación de dinamización 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 unpivot_view que contenga una definición de función de anulación de dinamización para cambiar la forma de una tabla de sales_temp con el siguiente comando:
CREATE VIEW unpivot_view AS
SELECT
FV$Unpivot(
'sales_temp', -- el nombre de la tabla temporal que contiene los datos
'category', -- el nombre de la columna que permanecerá en la fila
'month', -- el nombre de la nueva columna que almacenará el nombre de la columna antigua
'sales', -- el nombre de la nueva columna que almacenará los valores de la columna antigua
'month, sales' -- el nombre de la columna antigua que se va a convertir en una fila
) AS unpivot_result; -- nombre de alias para los resultados de la función de anulación de dinamización
  • Cree otra vista que contenga la definición de la función dinámica que queremos usar. Las vistas se pueden crear mediante el comando CREATE VIEW. Por ejemplo, podemos crear una vista con el nombre pivot_view que contiene la definición de la función pivote para cambiar la forma de la tabla unpivot_view con el siguiente comando:
CREATE VIEW pivot_view AS
SELECT
FV$Pivot(
'unpivot_view', -- el nombre para mostrar 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.

Artículos más recientes