Maison > base de données > tutoriel mysql > Comment faire pivoter plusieurs colonnes dans T-SQL pour remodeler les données à des fins de reporting ?

Comment faire pivoter plusieurs colonnes dans T-SQL pour remodeler les données à des fins de reporting ?

DDD
Libérer: 2025-01-05 09:52:43
original
256 Les gens l'ont consulté

How to Pivot Multiple Columns in T-SQL to Reshape Data for Reporting?

Pivotement de plusieurs colonnes dans TSQL

Lorsque vous travaillez avec des bases de données relationnelles, il est souvent nécessaire de remodeler les données à des fins de reporting. Le pivotement est une technique qui peut être utilisée pour transformer les données d'une structure orientée lignes en une structure orientée colonnes. Cet article montre comment faire pivoter plusieurs colonnes dans un tableau tout en conservant toutes les étiquettes associées.

Défi

Considérez le tableau suivant nommé GRAND_TOTALS :

RATIO RESULT SCORE GRADE
Current Ratio 1.294 60 Good
Gearing Ratio 0.3384 70 Good
Performance Ratio 0.0427 50 Satisfactory
TOTAL NULL 180 Good

L'objectif est de faire pivoter les colonnes RESULT, SCORE et GRADE, ce qui donne un tableau avec les éléments suivants format :

RATIO Current Ratio Gearing Ratio Performance Ratio TOTAL
Result 1.294 0.3384 0.0427 NULL
Score 60 70 50 180
Grade Good Good Satisfactory Good

Solution

Pour faire pivoter efficacement plusieurs colonnes, envisagez les étapes suivantes :

  1. Annulez le pivotement du résultat, du score et de la note Colonnes :

    L'annulation du pivotement consiste à convertir plusieurs colonnes en une seule colonne tout en gardant une trace de la colonne d'origine. noms. Ceci peut être réalisé en utilisant la clause UNPIVOT. La syntaxe ci-dessous montre comment annuler le pivotement des colonnes :

    select ratio, col, value
    from GRAND_TOTALS
    cross apply
    (
      select 'result', cast(result as varchar(10)) union all
      select 'score', cast(score as varchar(10)) union all
      select 'grade', grade
    ) c(col, value)
    Copier après la connexion

    Cette requête créera une nouvelle table avec les colonnes RATIO, COL et VALUE, où COL représente le nom de la colonne d'origine (résultat, score ou note). ) et VALUE contient les valeurs correspondantes.

  2. Appliquer le PIVOT Fonction :

    Une fois les données non pivotées, la fonction PIVOT peut être appliquée pour transformer les données dans le format souhaité. La syntaxe de pivotement est la suivante :

    select ratio = col,
      [current ratio], [gearing ratio], [performance ratio], total
    from
    (
      select ratio, col, value
      from GRAND_TOTALS
      cross apply
      (
        select 'result', cast(result as varchar(10)) union all
        select 'score', cast(score as varchar(10)) union all
        select 'grade', grade
      ) c(col, value)
    ) d
    pivot
    (
      max(value)
      for ratio in ([current ratio], [gearing ratio], [performance ratio], total)
    ) piv;
    Copier après la connexion

    Dans cette requête, la fonction PIVOT regroupe les lignes par colonne RATIO et fait pivoter les données en utilisant les valeurs COL comme en-têtes de colonne. La fonction d'agrégation MAX est utilisée pour récupérer la dernière valeur pour chaque ligne.

Résultat

L'exécution de la requête ci-dessus produira le tableau croisé dynamique souhaité :

RATIO Current Ratio Gearing Ratio Performance Ratio TOTAL
grade Good Good Satisfactory Good
result 1.29400 0.33840 0.04270 NULL
score 60.00000 70.00000 50.00000 180.00000

Ce tableau conserve toutes les étiquettes nécessaires et fait pivoter avec succès les colonnes souhaitées.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal