Pivot en SQL Server

Pivot en SQL Server

Para convertir filas en columnas usando Pivot, el cual nos permitirá realizar dichas operaciones cuando por ejemplo tenemos un resultado como el siguiente:

Pivot consulta

En este caso hemos ejecutado una consulta usando la base de datos Northwind en español donde mostramos la cantidad de pedidos que hizo cada cliente por año. La consulta ejecutada fue la siguiente:

Consulta sin pivot

Dándonos cuenta de unos detalles al mostrarse el resultado nos aparecen demasiados registros y ademas se duplican los clientes porque el mismo cliente compro en distintos años, entonces lo ideal sería que se muestren como cabeceras los años, como filas los nombre de los clientes y como resultados las veces en cada año que compró cada cliente. Para hacer esto posible usaremos PIVOT, lo cual lo integraremos en la misma consulta pero teniendo en cuenta su sintaxis.

SELECT * FROM ( AQUI VA NUESTRA CONSULTA SIN PIVOT ) as tablita PIVOT ((FUNCION DE AGREGADO) FOR (CAMPO CABECERAS) IN ([FILTRO CABECERA])) as pvt;

Para revisar más detalles de la sintaxis con Pivot puedes leer la documentación oficial en:

https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

Usando esta sintaxis colocamos nuestra nueva consulta anterior y nos quedaría de la siguiente forma:

Consulta con pivot

Ejecutando la nueva consulta tenemos el siguiente resultado:

Consulta con pivot 2

Ccomo vemos tenemos un reporte que es mucho más fácil de comprender donde los años se cargan en la cabecera usando los filtros de los años que queremos obtener los resultados en este caso 1997 y 1998. Si quisieramos colocar las cabeceras de forma dinámica existe el pivot dinámico pero eso lo veremos en otro post.

Publicar un comentario

Guardar mi nombre, correo electrónico y sitio web en este navegador la próxima vez que comente

0 Comentarios