sql >> Base de Datos >  >> RDS >> Mysql

¿Transponer una fila en columnas con MySQL sin usar UNIONS?

Saqué esto del libro The Art of SQL , páginas 284-286:

Digamos que el nombre de su tabla es foo .

Primero, crea una tabla llamada pivot :

CREATE Table pivot (
  count int
);

Inserte en esas tablas tantas filas como columnas desee pivotar en foo . Como tienes tres columnas en foo que desea pivotar, cree tres filas en la tabla dinámica:

insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Ahora haz una unión cartesiana entre foo y pivot , usando un CASE para seleccionar la columna correcta según el conteo:

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;

Esto debería darte lo que quieres.