Utilisez l'instruction CASE WHEN en SQL pour effectuer le pivotement des colonnes
L'opération pivot dans SQL fait référence à la conversion de colonnes disposées verticalement dans la table de données en colonnes disposées horizontalement. Ceci est généralement accompli à l'aide de l'instruction CASE WHEN.
Supposons qu'il y ait un tableau avec trois colonnes : nom, valeur et montant. Le but est de transformer les données en une nouvelle représentation : chaque ligne représente un nom et chaque colonne représente une valeur spécifique dans la colonne val, telle que 'Val1' et 'Val2'.
Vous avez essayé d'écrire une requête initiale en utilisant une instruction CASE WHEN, mais les résultats ne sont pas tout à fait corrects. Plus précisément, les lignes pour John et Peter sont répétées deux fois, une ligne contenant la valeur du montant associée à val = 1 et l'autre ligne contenant la valeur du montant associée à val = 2.
Pour résoudre ce problème, nous pouvons utiliser la fonction d'agrégation SUM() en conjonction avec l'instruction CASE WHEN. En additionnant les montants associés à chaque valeur val, nous regroupons efficacement les lignes pour chaque nom et fusionnons les valeurs en une seule colonne.
La requête modifiée suivante produira les résultats souhaités :
<code class="language-sql">SELECT name, SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1, SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2 FROM bank GROUP BY name</code>
Cette requête additionne le montant de chaque valeur val dans chaque groupe de noms et obtient le résultat suivant :
name | amountVal1 | amountVal2 |
---|---|---|
John | 2000 | 1888 |
Peter | 1999 | 1854 |
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!