Maison >base de données >tutoriel mysql >Comment faire pivoter correctement les colonnes dans SQL à l'aide de CASE WHEN et GROUP BY ?

Comment faire pivoter correctement les colonnes dans SQL à l'aide de CASE WHEN et GROUP BY ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-11 15:56:41569parcourir

How to Correctly Pivot Columns in SQL Using CASE WHEN and GROUP BY?

Pivotez les colonnes SQL à l'aide de CASE WHEN et corrigez l'instruction GROUP BY

Description du problème :

Pour faire pivoter une colonne d'un tableau en plusieurs colonnes en fonction de conditions spécifiques, les requêtes SQL peuvent utiliser des expressions CASE WHEN. Cependant, lors de la mise en œuvre de cette méthode, les utilisateurs peuvent rencontrer des résultats incorrects en raison d'un regroupement manquant.

Requête :

Pour résoudre ce problème, une requête modifiée incluant la fonction d'agrégation SUM() et le regroupement correct est fournie ci-dessous :

<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>

Explication :

  • La fonction SUM() doit être utilisée dans l'expression CASE WHEN pour calculer le montant total de chaque val (1 et 2) pour chaque nom.
  • La clause de nom GROUP BY regroupe les résultats par colonne de nom, garantissant que les montants pour chaque nom différent sont correctement additionnés.

Résultats attendus :

Cette requête améliorée produira le résultat souhaité :

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!

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