Mostrando entradas con la etiqueta Pivot. Mostrar todas las entradas
Mostrando entradas con la etiqueta Pivot. Mostrar todas las entradas

martes, 9 de febrero de 2016

Transponiendo tablas en T-SQL con la cláusula PIVOT.

¿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: