Maison >base de données >tutoriel mysql >Comment faire pivoter plusieurs colonnes dans SQL Server pour une présentation optimale des données ?

Comment faire pivoter plusieurs colonnes dans SQL Server pour une présentation optimale des données ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 18:21:12184parcourir

How to Pivot Multiple Columns in SQL Server for Optimal Data Presentation?

Pivoter plusieurs colonnes dans SQL Server pour une présentation optimale des données

Lorsque vous travaillez avec des bases de données relationnelles, les tableaux croisés dynamiques peuvent être un moyen efficace de remodeler les données pour une analyse et une visualisation plus faciles. Dans SQL Server, cette technique peut être particulièrement utile lorsqu'il s'agit de tables comportant plusieurs colonnes que vous souhaitez afficher sous forme de lignes.

Énoncé du problème :

Considérez l'exemple suivant table :

Branch  | Category | Sales | Stock  | Target
------- | ******** | ----- | ----- | -------
Branch1 | Panel    | 100   | 200   | 300
Branch1 | AC       | 150   | 250   | 350
Branch1 | Ref      | 200   | 300   | 400

L'objectif est de faire pivoter la colonne Catégorie et d'afficher les colonnes Ventes, Stock et Cible sous forme de lignes, ce qui donne ce qui suit sortie :

Branch  | Panel | AC   | Ref  |
------- | ------ | -- | ---- |
Branch1 | 100   | 150 | 200  |

Solution :

Pour obtenir le résultat souhaité, nous pouvons utiliser une série d'instructions pivot dans SQL Server. La clé est de renommer les colonnes dans les résultats du pivot intermédiaire pour préparer l'opération de pivot suivante.

Considérez le code suivant :

SELECT
*
FROM
(
  SELECT 
   Branch,
   Category,
   Category+'1' As Category1,
   Category+'2' As Category2,
   Sales, 
   Stock, 
   Target
  FROM TblPivot
 ) AS P

 -- For Sales
 PIVOT
 (
   SUM(Sales) FOR Category IN ([Panel], [AC], [Ref])
 ) AS pv1

 -- For Stock
 PIVOT
 (
   SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1])
 ) AS pv2

 -- For Target
 PIVOT
 (
   SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2])
 ) AS pv3
 GO

Ce code exécute les étapes suivantes :

  1. Préparer les données : Il renomme la colonne Catégorie et ajoute deux colonnes supplémentaires, Catégorie1 et Catégorie2, pour faciliter les pivots ultérieurs.
  2. Pivot pour les ventes : La première instruction pivot crée le tableau pv1, qui additionne les ventes pour chaque catégorie.
  3. Pivot pour Stock : La deuxième instruction pivot crée le tableau pv2, qui résume le stock pour chaque catégorie.
  4. Pivot pour la cible : La troisième instruction pivot crée le tableau pv3, qui additionne la cible pour chaque catégorie.

Le tableau pv3 résultant contient la résultat souhaité, avec les catégories sous forme de lignes et les colonnes représentant les ventes, le stock et les valeurs cibles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn