¿Qué es una tabla dinámica en sql?
En SQL, una tabla dinámica es un conjunto de datos que se transforma de una colección de filas separadas a una colección de columnas. En las bases de datos relacionales, como Microsoft SQL Server, Oracle y MySQL, las tablas pivote se pueden utilizar para simplificar la gran cantidad de datos con el fin de que sea más fácil de leer y entender. Para crear una tabla dinámica, un agregado se usa contra un conjunto de datos para distribuir múltiples filas de una sola columna en una sola fila con múltiples columnas. Este pivota esencialmente el conjunto de resultados de lado.
Vídeo: Función Pivot en SQL Server
Data de muestra
Para entender mejor una tabla dinámica, un ejemplo de algunos datos de ventas está aquí. Copiar el siguiente en Microsoft SQL Server Management Studio para probar los ejemplos. Crear una tabla #PivotTestTable (varchar CustName (8), item_type varchar (8), Item_Amount numérico (6,2)) insertar en #PivotTestTable seleccione `Jason`, `ordenador`, 435.34 union select `Jason`, `software`, 243,54 union select `Jason`, `monitor`, 158.23 union select `Alison`, `ordenador`, 345.89 union select `Alison`, `software`, 78.78 union select `Alison`, `monitor`, 123.45
A partir de datos no girados
Cuando se consulta la tabla temporal, #PivotTestTable, el resultado es el siguiente. CustName item_type Item_Amount -------- --------- ----------- Alison Alison ordenador 345.89 123.45 Monitor de Alison Software 78.78 Jason ordenador 435.34 158.23 Monitor de Jason Jason Software 243.54 Como se puede ver, el conjunto de resultados muestra dos clientes, Alison y Jason, que han adquirido tres diferentes tipos de artículos. Hay seis filas de datos para dos clientes. Si quisiéramos ver los datos en una sola fila por cliente, usaríamos una tabla dinámica para conseguir el resultado deseado.
Pivote por función de pivote
Microsoft SQL Server tiene una función de pivote integrado en SQL Server. He aquí un ejemplo con los datos #PivotTestTable. SELECT CustName como Total_Sales_By_Cust, ordenador, monitor, software FROM (SELECT CustName, item_type, Item_Amount DE #PivotTestTable) un pivote (suma (Item_Amount) PARA item_type en (ordenador, monitor, software)) b Esta consulta devolverá los originales seis filas pivotan en dos filas con columnas separadas para cada tipo de artículo vendido. El conjunto de resultados generados a partir de esta consulta está aquí: Total_Sales_By_Cust Monitor Software ------------------- --------- -------- --------- Alison 345,89 123,45 78,78 435,34 158,23 243,54 Jason
Vídeo: Tablas de Referencia Cruzada Función Pivot (35-35) Bases de Datos en Microsoft Sql Server 2014
Pivote de estado global del caso
Mediante el uso de una función agregada (SUM, AVG, MIN, MAX) en torno a una declaración de caso en una consulta SQL, somos capaces de lograr el mismo resultado que la función de pivote con menos trabajo. SELECT CustName como Total_Sales_By_Cust, suma (caso item_type cuando `ordenador`, entonces Item_Amount final) como ordenador, suma (caso item_type cuando `Monitor` y luego Item_Amount final) como monitor, suma (caso item_type cuando `software`, entonces Item_Amount final) como software desde #PivotTestTable GROUP BY CustName Esta consulta devolverá exactamente el mismo conjunto de resultados del ejemplo anterior y es sólo una preferencia por el tipo de pivote para su uso.
El error común con tablas dinámicas
Vídeo: Como utilizar PIVOT y UNPIVOT en SQL Server
Un error común para crear una tabla dinámica es crear una copia de combinación en la tabla de origen. Esto producirá resultados poco fiables y debe ser evitado. Este ejemplo es estrictamente un ejemplo de lo que no debe hacer. El resultado de esta muestra será el mismo: sin embargo, este ejemplo no funcionará en todos los casos. SELECT p1.CustName, p1.Item_Amount como ordenador, p2.Item_Amount como monitor, p3.Item_Amount como software desde #PivotTestTable p1 p2 #PivotTestTable INNER JOIN en p1.CustName = p2.CustName y p2.Item_Type = `Monitor` INNER JOIN # p3 PivotTestTable en p1.CustName = p3.CustName y p3.Item_Type = `software` DONDE p1.Item_Type = `ordenador`
Vídeo: Tablas dinámicas (Pivot table)
referencias
- enlazar MSDN