Caminho 2: Usando a função Pivot
Outra maneira de alterar a forma de uma tabela para converter linhas em colunas no MySQL é usar a função de pivô. A função de pivô é uma função que nos permite alterar a forma de uma tabela girando dados de linhas em colunas ou vice-versa. A função de pivô pode ser usada para transpor tabelas de forma fácil e rápida.
No entanto, o MySQL não tem uma função de pivô integrada que possamos usar diretamente. Portanto, precisamos usar certas extensões ou plugins para adicionar funções dinâmicas ao MySQL. Uma das extensões populares e frequentemente usadas é a Flexviews. Flexviews é uma extensão que fornece funções de atualização pivot, unpivot e incremental para MySQL. O Flexviews pode ser baixado e instalado em seu site oficial: https://github.com/greenlion/swanhart-tools/tree/master/flexviews
Para alterar a forma de uma tabela para converter linhas em colunas usando a função de pivô, precisamos fazer as seguintes etapas:
- Instale e habilite a extensão Flexviews no MySQL. Siga as instruções de instalação fornecidas em seu site oficial.
- Crie uma tabela temporária que contenha os dados que queremos moldar. Tabelas temporárias são tabelas que só existem durante uma sessão do MySQL e são excluídas automaticamente quando a sessão termina. 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;
- Crie um modo de exibição que contenha a definição da função de pivô que queremos usar. Um modo de exibição é um objeto de banco de dados que armazena os resultados de uma consulta SQL como uma tabela virtual. 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 sales_temp com o seguinte comando:
CREATE VIEW pivot_view AS SELECT FV$Pivot( 'sales_temp', -- o nome da tabela temporária 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.