Maison >base de données >tutoriel mysql >Comment faire pivoter plusieurs colonnes dans une table T-SQL ?
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 :
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)
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!