Maison >base de données >tutoriel mysql >Comment faire pivoter plusieurs colonnes simultanément dans SQL Server ?

Comment faire pivoter plusieurs colonnes simultanément dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-31 09:29:09976parcourir

How to Pivot Multiple Columns Simultaneously in SQL Server?

Pivotement de plusieurs colonnes dans SQL Server

Le pivotement est une technique de transformation dans SQL qui permet d'organiser les données des colonnes en lignes. Dans ce contexte, vous souhaitez faire pivoter la colonne de catégorie en lignes et afficher les ventes, les stocks et les valeurs cibles pour chaque catégorie.

Exemple d'entrée :

Branch  Category  Sales  Stock  Target
Branch1 Panel     100    20     30
Branch1 AC        120    30     40
Branch1 Ref       150    40     50

Désiré Sortie :

Branch Panel AC Ref
Branch1 100 120 150
Branch1 20 30 40
Branch1 30 40 50

Solution :

Pour obtenir le résultat souhaité, vous devez effectuer plusieurs opérations de pivotement :

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

Remarque :

  • La première sous-requête attribue de nouveaux noms à la catégorie colonne avec Category1 et Category2 pour préparer plusieurs pivots.
  • Les opérations de pivot ultérieures utilisent ces noms de colonnes étendus pour créer des lignes pour chaque catégorie.
  • Des agrégations sont appliquées aux colonnes pour résumer les valeurs de chacune. catégorie.

De plus, vous pouvez utiliser des fonctions d'agrégation sur pv3 pour résumer davantage les données si nécessaire.

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