Transformer des données larges en format long en SQL
Supposons que vous ayez une table appelée StudentMarks
avec les colonnes Name
, Maths
, Science
et English
. L'objectif est de convertir ces données grand format en un format long, dans lequel les noms de sujets deviennent une nouvelle colonne. Le résultat cible devrait ressembler à ceci :
<code>Name Subject Marks Tilak Maths 90 Tilak Science 40 Tilak English 60</code>
Une approche courante utilisant l'opérateur UNPIVOT
peut initialement sembler difficile pour inclure les noms de colonnes en tant que nouvelle colonne. Cependant, la solution est simple :
<code class="language-sql">SELECT u.name, u.subject, u.marks FROM StudentMarks AS s UNPIVOT ( marks FOR subject IN (Maths, Science, English) ) AS u;</code>
Cette requête SQL utilise UNPIVOT
pour restructurer la table StudentMarks
(alias 's'). La clause FOR
dans UNPIVOT
spécifie les colonnes à ne pas pivoter (Maths
, Science
, English
), et ces noms de colonnes remplissent automatiquement la nouvelle colonne Subject
dans l'ensemble de données résultant. Les valeurs marks
sont affectées à la colonne marks
dans le tableau non croisé. Cette requête révisée génère efficacement les colonnes Nom, Objet et Marques souhaitées au format long.
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!