Vous êtes sur la page 1sur 6

Curso: Almacenamiento de la Informacin

Ensayo 1
PIVOT y UNPIVOT
OBJETIVOS
Aprender los conceptos de pivot y unpivot.
Practicar pivot y unpivot utilizando bases de datos de ejemplo Northwind o AdventureWorks
Conocer nuevas funciones de SQL server.
CONCEPTO
Los operadores pivot y unpivot, as como se puede utilizar en SQL server tambin se puede usar en
Oracle 11g, su utilidad se aprecia cuando se tiene que dar un informe de tablas con referencias
cruzadas, lo cual logramos a travs de esta funcin trasponer una columna a fila, al momento de hacer
ste giro de 90 grados hacia la izquierda la primera columna pasa a ser la primera fila del de
encabezado. Para esta rotacin se necesita tener un punto pivote, lo cual se puede apreciar de una
forma ms grafica en el ejemplo # 1 incluido en los anexos.
Pivot es un operador incluido en SQL server a partir de la versin 2005 que se utiliza en la clusula
del From para poder rotar las filas en columnas y poder utilizarlos en informes de tablas cruzadas
para que se puedan apreciar de una forma ms resumida o mejor legible para fcil comprensin.
Unpivot realiza una accin casi inversa a la de pivot, unpivot se encarga de realzar siempre una
rotacin pero mostrando los datos de otra forma.
Pivot y unpivot se utilizan bsicamente para convertir filas a columnas o columnas a filas (es algo
similar a lo que hacemos en Excel con la funcin Trasponer), podemos mostrar datos resumidos, as
como tambin agrupando datos de la misma clase mostrando datos que poseen NULL.
Anteriormente se tena que hacer utilizando cursores o con ayuda de clusulas como la de CASE
WHEN que ahora se pueden hacer con pivot y unpivot.
Existen tambin Pivot estticos y Pivot dinmicos, que la principal diferencia est en los nombres
de las columnas.
PIVOT gira una expresin con valores de tabla convirtiendo los valores nicos de una columna de
la expresin en varias columnas en la salida y realiza agregaciones donde son necesarias en
cualquier valor de columna restante que se desee en la salida final. UNPIVOT realiza la operacin
contraria a PIVOT girando las columnas de una expresin con valores de tabla a valores de
columna.
Tenga en cuenta que UNPIVOT no es exactamente el operador inverso a PIVOT. PIVOT realiza
una agregacin y, por tanto, combina posibles mltiples filas en una fila nica en la salida.
UNPIVOT no reproduce el resultado de la expresin con valores de tabla original porque las filas
se han combinado. Adems, los valores NULL de la entrada de UNPIVOT desaparecen en la salida,
mientras que pueden haber sido valores NULL en la entrada antes de la operacin PIVOT.
(Microsoft, 2008).
Como se explica en el texto citado anteriormente Pivot y unpivot tienen la funcin de girar las tablas,
pasando filas a columnas o columnas a filas, todo depender de cmo deseamos presentar nuestra

informacin utilizando mencionados operadores ya que al final depender de qu necesitemos, para


saber cul de los dos vamos a utilizar al ejecutar nuestras consultas.
Una observacin muy interesante es que al escuchar el trmino unvpivot suponemos que har el
proceso exactamente inverso o contrario de pivot basndonos slo en la premisa del nombre, pero no es
del todo correcto, ya que en varios casos lo que hace es combinar varias filas en una sola, as como
tambin los valores Null en unpivot no se muestran en la salida, por ello es necesario conocer lo que
hace cada uno de ellos para obtener los resultados deseados.
CONCLUSIONES
Las funciones descritas en este ensayo, no son tan complicadas de utilizar, incluso las consultas o
Querys no son muy extensas a la hora de escribirlas, pero hay que practicarlas para poder comprender
como funciona cada una de ellas correctamente y ms an si no se est familiarizado con los trminos.
Son de mucha utilidad a la hora de presentar los datos de una manera distinta a la convencional e
incluso ms ordenada, en menos tiempo y no importando si son gran cantidad de datos.
Es importante mantenerse al da con los avances tanto de la tecnologa como de las nuevas
funciones que van surgiendo, ya que en la mayora de los casos al utilizarlas correctamente podemos
ahorrarnos tiempo, recursos entre otras cosas ms, como se mencion para caso de utilizar la funcin
pivot y unpivot.

RECOMENDACIONES

Documentarse bien antes para poder estar seguros de cmo funcionan y cundo es
conveniente utiliza una u otra.
Practicar en ambientes de prueba previo a utilizarlos en datos reales.
o Podra considerar la base datos ejemplo Nothwind o la AdventureWorks para
comprender mejor cmo funcionan.
Utilizar las funciones PIVOT y UNPIVOT cuando se necesite presentar informacin de
manera distinta en vez de utilizar Case When o Cursores

BIBLIOGRAFA / EGRAFA
Microsoft. (2008). Usar PIVOT y UNPIVOT. Recuperado el 24 de marzo de 2015, de Biblioteca
TechNet: https://technet.microsoft.com/es-es/library/ms177410%28v=sql.105%29.aspx
Sergio Snchez Arias (15/12/2014). Filas a columnas y viceversa con Pivot y Unpivot. Recuperado el
24 de marzo de 2015. http://chancrovsky.blogspot.com/2014/12/pivot-unpivot.html.
Oracle (s.f.). Pivot and Unpivot. Recuperado el 25 de marzo de 2015. Technetwork article SQL.
http://www.oracle.com/technetwork/articles/sql/11g-pivot-097235.html.

ANEXOS
Ejemplo de cmo trabajar con PIVOT y UNPIVOT.
Trabajaremos sobre la base AdventureWorks2012 y con el siguiente query:

Con la consulta anterior obtenemos las ventas realizadas entre el periodo


correspondiente, aun no los agrupamos por ao y mes, pero si obtenemos esos valores
de cada venta para hacer la agrupacin.
Para lograr un PIVOT requerimos de 3 cosas:
1. Una columna de agrupacin.
2. Una columna donde estn los nombres de nuestras futuras columnas.
3. Una columna donde se encuentran los valores de las intersecciones de las 2
anteriores, a la cual sea factible aplicar una funcin de agregado( MAX, MIN, AVG,
SUM, COUNT, etc ).
Por cuestiones de buenas prcticas se recomienda una estructura como la siguiente:

Ahora solo aplicamos nuestro query:

UNPIVOT

Se podra decir que es el proceso que revierte el PIVOT a su estado original, lo digo as
porque recuerden que los datos ingresados para realizar el PIVOT del query anterior no
estaban agrupados y una vez que apliquemos el UNPIVOT aqu los regresaremos como si
estuvieran agrupados por ao y mes.

Necesitamos identificar al menos 2 puntos importantes:


1. Un nombre de columna a lo que anteriormente eran nuestras columnas( [1],[2],
[3],etc)
2. Un nombre de columna para el valor contenido dentro de las columnas anteriores.
Una vez hecho esto, aplicamos lo siguiente:

Utilizaremos la consulta que hemos trabajado, solo que ahora utilizaremos otro cte:

EJEMPLO # 1 SOBRE PIVOT Y UNPIVOT


En un informe de tabla de referencias cruzadas, desea transponer la columna Tiempos Comprado a
la fila de encabezado, como se muestra en la Figura. La columna se convierte en la primera fila, como
si la columna se gira 90 grados hacia la izquierda para convertirse en la fila de encabezado. Esta
rotacin figurativa necesita tener un punto de pivote y en este caso el punto de pivote pasa a ser el
count (cod_provincia) expresin.

Este es el punto de
pivote
Traspone
r

PREGUNTAS
1. Qu accin realiza PIVOT?
2. UNPIVOT realiza exactamente lo contrato que PIVOT?
3. Que se utilizaba anteriormente cuando no exista an PIVOT y UNPIVOT?