Utilisation de CASE WHEN pour le pivotement des colonnes SQL
Besoin de transformer vos données SQL de lignes en colonnes ? L'instruction CASE WHEN
offre une solution simple pour le pivotement, en particulier lorsqu'il s'agit de tableaux contenant des valeurs en double dans une colonne qui doivent être agrégées.
Illustrons avec un exemple. Imaginez ce tableau :
<code class="language-sql">Bank: name val amount John 1 2000 Peter 1 1999 Peter 2 1854 John 2 1888</code>
Notre objectif : restructurer cela en un tableau où les valeurs "val" uniques deviennent des colonnes, et chaque "nom" unique est une ligne. Le résultat souhaité :
<code class="language-sql">name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854 </code>
Voici comment réaliser ce pivot en utilisant SUM()
et CASE WHEN
:
<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 utilise SUM()
pour agréger les valeurs amount
pour chaque combinaison unique name
et val
. L'instruction CASE WHEN
vérifie si val
vaut 1 ou 2, attribuant le amount
correspondant en conséquence. GROUP BY name
garantit une ligne par nom unique. Le résultat ? Les colonnes amountVal1
et amountVal2
représentent parfaitement les données pivotées. Cette méthode est efficace pour un nombre connu et limité de val
valeurs. Pour un nombre dynamique de valeurs, pensez à utiliser PIVOT ou d'autres techniques plus avancé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!