Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Transpor uma linha em colunas com o MySQL sem usar UNIONS?


Tirei isso do livro The Art of SQL , páginas 284-286:

Digamos que o nome da sua tabela seja foo .

Primeiro, crie uma tabela chamada pivot :
CREATE Table pivot (
  count int
);

Insira nessas tabelas tantas linhas quantas colunas você deseja dinamizar em foo . Como você tem três colunas em foo que você deseja dinamizar, crie três linhas na tabela dinâmica:
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Agora faça uma junção cartesiana entre foo e pivot , usando um CASE para selecionar a coluna correta com base na contagem:
SELECT foo.id, Case pivot.count
  When 1 Then cat
  When 2 Then one_above
  When 3 Then top_level
End Case
FROM foo JOIN pivot;

Isso deve lhe dar o que você quer.