Maison > base de données > tutoriel mysql > Comment puis-je faire pivoter une table SQL à l'aide de CASE WHEN pour éviter les lignes en double ?

Comment puis-je faire pivoter une table SQL à l'aide de CASE WHEN pour éviter les lignes en double ?

Barbara Streisand
Libérer: 2025-01-11 15:47:43
original
960 Les gens l'ont consulté

How Can I Pivot a SQL Table Using CASE WHEN to Avoid Duplicate Rows?

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

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal