Heim > Datenbank > MySQL-Tutorial > Wie werden Daten in MySQL geschwenkt: Spalten in Zeilen umwandeln?

Wie werden Daten in MySQL geschwenkt: Spalten in Zeilen umwandeln?

Susan Sarandon
Freigeben: 2025-01-09 15:12:39
Original
392 Leute haben es durchsucht

How to Pivot Data in MySQL: Transforming Columns into Rows?

MySQL Pivot: Spalten in Zeilen konvertieren

In MySQL muss eine Pivot-Tabelle durch Konvertieren von Spalten in Zeilen generiert werden, um die Daten besser darzustellen. Stellen Sie sich beispielsweise eine Tabelle vor, die mehrere Spalten (z. B. Spalte 1, Spalte 2) enthält, die Daten für verschiedene Monate (z. B. Januar, Februar) darstellen.

Anforderungen: Erstellen Sie einen Bericht, der Daten in einem Pivot-Tabellenformat darstellt, wobei jede Zeile eine Spalte in der Originaltabelle und jede Spalte einen anderen Monat darstellt.

Datenerweiterung:

MySQL fehlen integrierte Funktionen zum Entfalten von Daten (Konvertieren von Spalten in Zeilen). Dies kann jedoch mit einer UNION ALL-Abfrage erreicht werden:

<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>
Nach dem Login kopieren

Ergebnis:

Diese Abfrage konvertiert die Daten in das folgende Format:

ID MONTH VALUE DESCRIP
101 Jan A col1
101 Jan B col2
101 Jan NULL col3
101 Jan B col4
102 Feb C col1
102 Feb A col2
102 Feb G col3
102 Feb E col4

Pivot:

Sobald die Daten erweitert sind, können sie mithilfe von Aggregatfunktionen in das gewünschte Pivot-Tabellenformat konvertiert werden. Die folgende Abfrage verwendet eine CASE-Anweisung, um die Daten nach jeder Spalte (Beschreibung) zu gruppieren und die Werte für Januar und Februar anzuzeigen:

<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
) src
GROUP BY descrip</code>
Nach dem Login kopieren

Ergebnis:

Diese Abfrage generiert das erforderliche Pivot-Tabellenformat:

DESCRIP JAN FEB
col1 A C
col2 B A
col3 0 G
col4 B E

Das obige ist der detaillierte Inhalt vonWie werden Daten in MySQL geschwenkt: Spalten in Zeilen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage