Maison >base de données >tutoriel mysql >Comment faire pivoter plusieurs colonnes dans une table T-SQL ?

Comment faire pivoter plusieurs colonnes dans une table T-SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 21:45:41959parcourir

How to Pivot Multiple Columns in a T-SQL Table?

Tableaux croisés T-SQL pour plusieurs colonnes

Dans T-SQL, le pivotement des données peut être une technique utile pour transformer les structures de table afin de présenter données différemment. Lorsque le pivotement implique la gestion de plusieurs colonnes, annuler le pivotement des données peut s'avérer bénéfique.

Considérez le tableau suivant :

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

Le but est de faire pivoter ce tableau pour obtenir le résultat souhaité suivant :

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

Pour y parvenir, nous pouvons suivre ces étapes :

  1. Annuler le pivotement des colonnes de résultats, de scores et de notes :

    Utilisez la fonction UNPIVOT ou CROSS APPLY pour annuler le pivotement des données :

    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)
  2. Pivoter le non-pivoté Données :

    Appliquez la fonction PIVOT aux données non pivotées :

    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;

Cela donnera le résultat souhaité, en fournissant un tableau avec plusieurs colonnes pivoté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!

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