Maison >base de données >tutoriel mysql >Comment annuler le pivotement des données et inclure les noms de colonnes en tant que nouvelle colonne dans SQL ?

Comment annuler le pivotement des données et inclure les noms de colonnes en tant que nouvelle colonne dans SQL ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-21 04:37:07893parcourir

How to Unpivot Data and Include Column Names as a New Column in SQL?

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!

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