Unpivoting : Restructuration des données relationnelles
Imaginez un tableau, StudentMarks
, stockant les noms des élèves (Name
) et leurs scores dans diverses matières (Maths
, Science
, English
). Les données sont initialement organisées de cette façon :
<code>Name, Maths, Science, English Tilak, 90, 40, 60 Raj, 30, 20, 10</code>
Mais que se passe-t-il si nous avons besoin d'une structure différente, dans laquelle le score de chaque matière apparaît sur une nouvelle ligne ? Le résultat souhaité ressemble à ceci :
<code>Name, Subject, Marks Tilak, Maths, 90 Tilak, Science, 40 Tilak, English, 60 Raj, Maths, 30 Raj, Science, 20 Raj, English, 10</code>
C'est là qu'intervient le SQL non pivotant. C'est une technique puissante pour transformer des tableaux larges (plusieurs colonnes) en tableaux longs (plusieurs lignes).
Voici comment y parvenir à l'aide d'une requête SQL :
<code class="language-sql">SELECT u.name, u.subject, u.marks FROM student s UNPIVOT ( marks FOR subject IN (Maths, Science, English) ) u;</code>
Cette requête utilise l'opérateur UNPIVOT
. Il prend les colonnes Maths
, Science
et English
et les transforme en une seule colonne Subject
, avec les scores correspondants dans la colonne Marks
. Le résultat est le format long souhaité.
Pour une démonstration en direct, consultez ce SQL Fiddle :
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!