Como alterar o formulário de tabela para converter linhas em colunas no MySQL

Caminho 3: Usando as funções Unpivot e Pivot

A terceira maneira de alterar a forma de uma tabela para converter linhas em colunas no MySQL é usar as funções unpivot e pivot. A função não pivot é a função oposta da função pivot, que altera a forma da tabela girando dados de colunas em linhas. A função unpivot pode ser usada para transpor tabelas de forma mais flexível e dinâmica.

No entanto, o MySQL também não tem uma função unpivot integrada que podemos usar diretamente. Portanto, também precisamos usar certas extensões ou plugins para adicionar funcionalidade unpivot ao MySQL. Uma das extensões populares e frequentemente usadas é a Flexviews que discutimos anteriormente. O Flexviews fornece uma função não pivotada, além de funções de atualização incremental e pivot para MySQL.

Para alterar a forma da tabela para converter linhas em colunas usando as funções unpivot e pivot, precisamos fazer as seguintes etapas:

  • Instale e habilite a extensão Flexviews no MySQL, se isso não tiver sido feito antes. Siga as instruções de instalação fornecidas em seu site oficial
  • Crie uma tabela temporária que contenha os dados que queremos moldar, se ainda não existiam antes. As tabelas temporárias podem ser criadas usando o comando CREATE TEMPORARY TABLE. Por exemplo, podemos criar uma tabela temporária com o nome sales_temp contendo dados da tabela sales_table com o seguinte comando:
CREATE TEMPORARY TABLE sales_temp AS
SELECT * FROM sales_table;
CREATE VIEW unpivot_view AS
SELECT
FV$Unpivot(
'sales_temp', -- o nome da tabela temporária que contém os dados
'category', -- o nome da coluna que permanecerá na linha
'month', -- o nome da nova coluna que armazenará o nome da coluna antiga
'sales', -- o nome da nova coluna que armazenará os valores da coluna antiga
'month, sales' -- o nome da coluna antiga a ser convertida em uma linha
) AS unpivot_result; -- nome do alias para resultados da função não pivot
  • Crie outro modo de exibição que contenha a definição da função de pivô que desejamos usar. Os modos de exibição podem ser criados usando o comando CREATE VIEW. Por exemplo, podemos criar uma exibição com o nome pivot_view que contém a definição da função dinâmica para alterar a forma da tabela unpivot_view com o seguinte comando:
CREATE VIEW pivot_view AS
SELECT
FV$Pivot(
'unpivot_view', -- o nome de exibição que contém os dados
'category', -- o nome da coluna que será a nova linha
'month', -- o nome da coluna que se tornará a nova coluna
'sales', -- o nome da coluna que contém o valor a ser calculado
'SUM', -- o nome da função de agregação a ser usada
NULL -- nomes de coluna adicionais a serem incluídos na tabela de resultados (opcional)
) AS pivot_result; -- nome do alias para o resultado da função de pivô
  • Execute uma consulta SQL para chamar a função de pivô do modo de exibição que foi criado. As consultas SQL que podemos usar são as seguintes:
SELECT * FROM pivot_view;

Essa consulta irá gerar a tabela de resultados que desejamos, como mostrado acima.

Últimos artigos