¿Cuántas veces, buscando soluciones para algún problema -navegando por Internet- damos con un
código que modificamos y logramos poner a funcionar, aunque no sepamos muy bien
cómo? Algo así como "¡ey! pues esto funciona pero ¿Podría implementarlo
desde cero ahora que he visto la solución?... Espera, ¿Por qué he puesto
esto aquí?...". A mi no me pasa, pero conozco a un amigo... Bueno, venga, sí que me ha pasado alguna vez, por ejemplo con la cláusula PIVOT de T-SQL... He tenido que usarla un par veces
(al menos), sin prestarle nunca mucha atención, así que en la siguiente ocasión volvía a perder demasiado tiempo buscando por la red soluciones a medias. Por lo tanto, como viene siendo habitual cuando escribo estas
parrafadas, espero que esta entrada sirva para ayudarme a entenderlo del
todo o -al menos- para encontrar una referencia más directa la próxima
vez que lo necesite (y bueno, a lo mejor es útil para alguien más...).
Transponer datos de una tabla -o pivotar datos de una tabla- es básicamente cambiar datos de filas a columnas (o viceversa). Pero en qué mundo descabellado y cruel podría ser necesario hacer una cosa así, os preguntaréis...; bueno, existe un modelo relacional de almacén de datos que se usa en entornos muy cambiantes que añaden o eliminan columnas en las tablas a lo loco o entidades que registran un montón de atributos. Se llama modelo EAV (o Entity-Attribute-Value). Este diseño consiste esencialmente en almacenar los datos en un formato de "atributo-valor". Uno de los mayores problemas que presenta este modelo es la dificultad para visualizar y presentar los datos. Imaginemos un ejemplo muy tonto: