Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten in MySQL entpivotieren und Pivotieren, um Spalten in Zeilen umzuwandeln?

Wie kann ich Daten in MySQL entpivotieren und Pivotieren, um Spalten in Zeilen umzuwandeln?

DDD
Freigeben: 2025-01-09 15:07:41
Original
852 Leute haben es durchsucht

How to Unpivot and Pivot Data in MySQL to Transform Columns into Rows?

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

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage