Qu`est-ce qu`un tableau croisé dynamique dans sql?

Qu`est-ce qu`un tableau croisé dynamique dans SQL?

Qu`est-ce qu`un tableau croisé dynamique dans SQL?

Video: Utiliser l'Outil Tableau Croisé Dynamique (Module 2)

Dans SQL, une table de pivot est un ensemble de données qui est transformé à partir d`une collection de lignes séparées à une collection de colonnes. Dans les bases de données relationnelles, telles que Microsoft SQL Server, Oracle et MySQL, des tableaux croisés dynamiques peuvent être utilisés pour simplifier les données importantes afin de le rendre plus facile à lire et à comprendre. Pour créer une table de pivotement, un agrégat est utilisé contre un ensemble de données pour distribuer des rangées multiples d`une seule colonne dans une rangée, avec plusieurs colonnes. Ce pivote essentiellement le résultat mis sur le côté.

Données-échantillon

Pour mieux comprendre un tableau croisé dynamique, un exemple de certaines données de vente est répertorié ici. Copiez le suivant dans Microsoft SQL Server Management Studio pour essayer les exemples. Création de la table #PivotTestTable (CustName varchar (8), ITEM_TYPE varchar (8), Item_Amount numérique (6,2)) insérer dans #PivotTestTable sélectionnez `Jason`, `Computer`, 435,34 union select `Jason`, `Software`, 243,54 union select `Jason`, `Monitor`, 158,23 union select `Alison`, `Computer`, 345,89 union select `Alison`, `Software`, 78,78 union select `Alison`, `Monitor`, 123.45

Video: Réaliser des filtres dans un Tableau Croisé Dynamique (Module 5)

À partir de données non pivoté

Lorsque la table temporaire, #PivotTestTable, est interrogé, le résultat est le suivant. CustName ITEM_TYPE Item_Amount -------- --------- ----------- Alison Computer 345,89 Alison Moniteur 123,45 Software Alison 78,78 Jason Computer 435,34 Jason moniteur 158,23 Jason Software 243,54 Comme vous pouvez le voir, le jeu de résultats montre deux clients, Alison et Jason, qui ont acheté trois différents types d`éléments. Il y a six lignes de données pour deux clients. Si nous voulions voir les données dans une seule ligne par client, nous utiliserions un tableau croisé dynamique pour obtenir le résultat souhaité.

Pivot par fonction PIVOT

Video: Excel - Comment Consolider des Classeurs avec l'outil TCD

Microsoft SQL Server a une fonction PIVOT intégrée dans SQL Server. Voici un exemple avec les données #PivotTestTable. SELECT CustName comme Total_Sales_By_Cust, Ordinateur, Moniteur, logiciel FROM (SELECT CustName, ITEM_TYPE, Item_Amount DE #PivotTestTable) une PIVOT (somme (Item_Amount) POUR ITEM_TYPE dans (ordinateur, moniteur, logiciel)) b Cette requête renverra les six premiers rangs pivotent en deux rangées avec des colonnes distinctes pour chaque type d`article vendu. Le jeu de résultats générés par cette requête est ici: Total_Sales_By_Cust Computer Monitor Software ------------------- --------- -------- Alison --------- 345,89 123,45 78,78 Jason 435,34 158,23 243,54

Pivot par Agrégé Déclaration de cas

En utilisant une fonction d`agrégation (SUM, AVG, MIN, MAX) autour d`une déclaration de cas dans une requête SQL, nous sommes en mesure d`atteindre le même résultat que la fonction PIVOT avec moins de travail. SELECT CustName comme Total_Sales_By_Cust, somme (cas ITEM_TYPE lorsque « ordinateur », puis Item_Amount fin) comme l`ordinateur, la somme (cas ITEM_TYPE lorsque « Monitor » puis Item_Amount fin) comme moniteur, somme (cas ITEM_TYPE lorsque le « logiciel » puis Item_Amount fin) comme logiciel à partir #PivotTestTable GROUP BY CustName Cette requête renvoie le jeu exactement le même résultat de l`exemple précédent et est seulement une préférence pour le type de pivot à utiliser.

Erreur commune avec tableaux croisés dynamiques

Une erreur commune pour créer un tableau croisé dynamique est de créer une jointure sur la table source. Cela produira des résultats peu fiables et doivent être évités. Cet exemple est strictement un exemple de quoi ne pas faire. Le résultat de cet échantillon sera le excursionnistes mais cet échantillon ne fonctionnera pas dans tous les cas. SELECT p1.CustName, p1.Item_Amount comme ordinateur, p2.Item_Amount comme moniteur, p3.Item_Amount comme logiciel à partir #PivotTestTable p1 INNER JOIN #PivotTestTable p2 sur p1.CustName = p2.CustName et p2.Item_Type = `Monitor` INNER JOIN # p3 PivotTestTable sur p1.CustName = p3.CustName et p3.Item_Type = `Software` OÙ p1.Item_Type = `Computer`

Les références

  • lien MSDN

A propos de l`auteur

AJ Graham est un spécialiste de Business Intelligence et Data Warehousing se concentrant sur Microsoft SQL Server. Il a écrit des articles techniques pour les sites tels que DemandStudios.com et eHow.com. AJ est diplômé de l`Université de Floride du Sud avec un diplôme en gestion des systèmes d`information.

Articles connexes