Ejemplo de SQL Server usando PIVOT
SQL Server usando una función PIVOT simple en un escenario de tipo del mundo real, donde siempre se conoce el número de columnas.
En el último artículo, escribí sobre el uso de UNPIVOT, esta es la función opuesta PIVOT, donde convertirá filas en columnas, he usado algunos datos que pueden no ser necesariamente un ejemplo del mundo real, pero nos darán suficientes opciones para jugar. con.
Dummy data
MyRow | MyCol | CalcCol |
1 | 1 | 1 |
1 | 3 | 1 |
1 | s | 1 |
2 | 2 | 1 |
2 | 2 | 6 |
2 | 3 | 1 |
3 | 2 | 1 |
3 | 3 | 1 |
3 | 3 | 3 |
3 | 5 | 5 |
Lo primero que debe hacer es crear este conjunto de datos ficticio, para que podamos hacerlo usando el código a continuación.
También vamos a crear un tipo de tabla (esto puede mejorar el rendimiento de las tablas temporales).
SQL
CREATE TYPE c1bs_Piv AS TABLE(MyRow NVARCHAR(10),--Row IDMyCol NVARCHAR(10),--Value to become columnCalcCol INT--Value to be Summed)GODECLARE @Piv c1bs_PivINSERT INTO @PivSELECT '1','1',1 UNIONSELECT '1','s',1 UNIONSELECT '1','3',1 UNIONSELECT '2','2',6 UNIONSELECT '2','2',1 UNIONSELECT '2','3',1 UNIONSELECT '3','5',5 UNIONSELECT '3','2',1 UNIONSELECT '3','3',1 UNIONSELECT '3','3',3
Para pivotar los datos, querremos escribir el siguiente código SQL.
SELECT *FROM @PivPIVOT (SUM(CalcCol)FOR MyColIN ([1],[2],[3])) AS MyTable
Y esto devolverá el siguiente conjunto de datos. Tenga en cuenta que donde agregamos las columnas "5" y "s" arriba, se omitirían con esto, y en el próximo artículo nos aseguraremos de capturarlo.
MyRow | 1 | 2 | 3 |
1 | 1 | NULL | 1 |
2 | NULL | 7 | 1 |
3 | NULL | 1 | 4 |