Como usar PIVOT de SQL SERVER
Hola, aqui os dejo el ejemplo de Pivot de sqlserver.
Que es un pivot de Sql???? pues eso pivotar una tabla, con ello conseguimos agrupar datos de forma horizonta, datos que nos costaria mas de una vista para obtener el mismo resultado.
Los pivot, lo que nos permite como he dicho antes es agrupar. Lo que hariamos en varias vistar haciendo los famosos group by con los sum , avg, max o min, lo puede resolver con una sola sentencia.
Aqui te dejo el script con los datos que utilizo en el video. te recomiendo que lo veas para entender como funciona.
Script de tabla temp y datos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
create Table TempVentas (cliente varchar(50) null, ±o int null, Importe numeric(18,2) null) Go Insert into TempVentas(cliente,±o,importe) values ('CL1',2010,110.20) Insert into TempVentas(cliente,±o,importe) values ('CL1',2011,90.10) Insert into TempVentas(cliente,±o,importe) values ('CL1',2012,110.20) Insert into TempVentas(cliente,±o,importe) values ('CL3',2011,45.99) Insert into TempVentas(cliente,±o,importe) values ('CL3',2013,219.99) Insert into TempVentas(cliente,±o,importe) values ('CL2',2017,12.17) Insert into TempVentas(cliente,±o,importe) values ('CL2',2017,66.45) Insert into TempVentas(cliente,±o,importe) values ('CL2',2016,22.18) Insert into TempVentas(cliente,±o,importe) values ('CL2',2015,40.20) Insert into TempVentas(cliente,±o,importe) values ('CL1',2014,65.10) Go |
Aqui te dejo el video con la explicacion.
Aqui te dejo las sentencias del pivot ya realizada para este ejemplo.
1 2 3 4 5 6 |
--EL MAXIMO Select Cliente,[2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017] from tempventas pivot( max(importe) for año in ([2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017]) ) as TablaTempPIVOT |
1 2 3 4 5 6 |
--Promedio Select Cliente,[2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017] from tempventas pivot( avg(importe) for año in ([2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017]) ) as TablaTempPIVOT |
1 2 3 4 5 6 |
--Suma Select Cliente,[2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017] from tempventas pivot( Sum(importe) for año in ([2010],[2011],[2012],[2013],[2014],[2015],[2016],[2017]) ) as TablaTempPIVOT |
Creo que con este pequeño ejemplo lo tienes facil.
Un saludo y suscribete en mi canal o en la web ….