MySQL-Daten-Pivot und Pivot: Spalten in Zeilen umwandeln
Angenommen, Sie haben eine Tabelle mit mehreren Spalten (Spalte 1, Spalte 2, Spalte 3 usw.) und möchten sie in ein Pivot-Tabellenformat konvertieren, in dem die Daten in Zeileneinheiten statt in Spalten dargestellt werden.
Um dies in MySQL zu erreichen, verwenden Sie zunächst die UNION ALL
-Abfrage, um die Daten zu plotten. Dieser Vorgang erstellt mehrere Zeilen aus den ursprünglichen Spaltenwerten:
<code class="language-sql">SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable;</code>
UNION ALL
Abfrageergebnisse:
ID | MONTH | VALUE | DESCRIP |
---|---|---|---|
101 | Jan | A | col1 |
102 | feb | C | col1 |
101 | Jan | B | col2 |
102 | feb | A | col2 |
101 | Jan | (null) | col3 |
102 | feb | G | col3 |
101 | Jan | B | col4 |
102 | feb | E | col4 |
Als nächstes schließen Sie die UNION ALL
-Abfrage in eine Unterabfrage ein, um die Daten zu schwenken. Verwenden Sie die Aggregatfunktionen GROUP BY
und CASE
-Anweisungen, um die Struktur der nicht geschwenkten Perspektive in das gewünschte Perspektivenformat umzuwandeln:
<code class="language-sql">SELECT descrip, MAX(CASE WHEN month = 'jan' THEN value ELSE 0 END) AS jan, MAX(CASE WHEN month = 'feb' THEN value ELSE 0 END) AS feb FROM ( SELECT id, month, col1 AS value, 'col1' AS descrip FROM yourtable UNION ALL SELECT id, month, col2 AS value, 'col2' AS descrip FROM yourtable UNION ALL SELECT id, month, col3 AS value, 'col3' AS descrip FROM yourtable UNION ALL SELECT id, month, col4 AS value, 'col4' AS descrip FROM yourtable ) AS src GROUP BY descrip;</code>
Ergebnisse der Pivot-Abfrage:
DESCRIP | JAN | FEB |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | 0 | G |
col4 | B | E |
Durch diesen Prozess wird die Tabellenstruktur effektiv von Spalten in Zeilen umgewandelt, sodass Sie Ihre Daten prägnanter und klarer präsentieren können.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten in MySQL entpivotieren und Pivotieren, um Spalten in Zeilen umzuwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!