Maison > base de données > tutoriel mysql > Comment puis-je faire pivoter une colonne dans SQL à l'aide de CASE WHEN et de l'agrégation ?

Comment puis-je faire pivoter une colonne dans SQL à l'aide de CASE WHEN et de l'agrégation ?

DDD
Libérer: 2025-01-11 16:08:42
original
748 Les gens l'ont consulté

How Can I Pivot a Column in SQL Using CASE WHEN and Aggregation?

Utilisez l'instruction CASE WHEN de SQL pour faire pivoter les colonnes

Dans les bases de données relationnelles, afin d'analyser ou d'afficher des données, il est souvent nécessaire de remodeler les données dans différents formats. Une transformation courante est le pivotement, qui combine plusieurs lignes de données en une seule ligne.

Question :

Considérons un tableau nommé « Banque » avec les colonnes « nom », « val » et « montant » :

name val amount
John 1 2000
Peter 1 1999
Peter 2 1854
John 2 1888

Le but est de faire pivoter la colonne "val" et de créer deux nouvelles colonnes nommées "amountVal1" et "amountVal2", représentant les valeurs "amount" avec des valeurs "val" de "1" et "2". respectivement. Le résultat souhaité ressemble à ceci :

name amountVal1 amountVal2
John 2000 1888
Peter 1999 1854

Solution :

Afin d'effectuer cette conversion, les expressions CASE WHEN peuvent être utilisées avec les fonctions d'agrégation. La requête SQL suivante obtient les résultats attendus :

<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>
Copier après la connexion

Dans cette requête :

  • CASE WHEN expression récupère la valeur "amount" pour chaque "val" et convertit toute valeur "val" sans correspondance en 0.
  • La fonction SUM() agrège les résultats pour chaque "nom", ajoutant effectivement les valeurs "montant" correspondant aux valeurs "val".
  • La clause GROUP BY regroupe les résultats par "nom", garantissant que les valeurs sont fusionnées pour chaque nom unique du tableau.

En utilisant cette requête, vous pouvez réussir à faire pivoter les données dans la table "Banque", en créant les colonnes requises "amountVal1" et "amountVal2" qui contiennent des valeurs "val" de "1" et "2" respectivement " valeur "montant".

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