Unpivoting: Restrukturierung relationaler Daten
Stellen Sie sich eine Tabelle vor, StudentMarks
, in der die Namen der Schüler (Name
) und ihre Ergebnisse in verschiedenen Fächern (Maths
, Science
, English
) gespeichert sind. Die Daten sind zunächst folgendermaßen organisiert:
<code>Name, Maths, Science, English Tilak, 90, 40, 60 Raj, 30, 20, 10</code>
Aber was ist, wenn wir eine andere Struktur benötigen – eine, bei der die Punktzahl jedes Probanden in einer neuen Zeile erscheint? Das gewünschte Ergebnis sieht so aus:
<code>Name, Subject, Marks Tilak, Maths, 90 Tilak, Science, 40 Tilak, English, 60 Raj, Maths, 30 Raj, Science, 20 Raj, English, 10</code>
Hier kommt das SQL-Unpivoting ins Spiel. Es handelt sich um eine leistungsstarke Technik zum Umwandeln breiter Tabellen (viele Spalten) in lange Tabellen (viele Zeilen).
So erreichen Sie dies mithilfe einer SQL-Abfrage:
SELECT u.name, u.subject, u.marks FROM student s UNPIVOT ( marks FOR subject IN (Maths, Science, English) ) u;
Diese Abfrage verwendet den Operator UNPIVOT
. Es nimmt die Spalten Maths
, Science
und English
und wandelt sie in eine einzelne Spalte Subject
mit den entsprechenden Bewertungen in der Spalte Marks
um. Das Ergebnis ist das gewünschte Langformat.
Für eine Live-Demonstration schauen Sie sich diese SQL Fiddle an:
Das obige ist der detaillierte Inhalt vonWie kann SQL Unpivoting breite Tabellendaten in ein langes Format umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!