Heim > Datenbank > MySQL-Tutorial > Wie kann ich Daten in MySQL mithilfe von „CASE'- oder „IF'-Anweisungen Pivotieren?

Wie kann ich Daten in MySQL mithilfe von „CASE'- oder „IF'-Anweisungen Pivotieren?

Linda Hamilton
Freigeben: 2024-11-09 10:05:02
Original
226 Leute haben es durchsucht

How to Pivot Data in MySQL Using `CASE` or `IF` Statements?

Anzeigen von Daten im Pivot-Format mit GROUP BY

Die vorliegende Aufgabe besteht darin, eine relationale Datenbanktabelle mit Zeilen, die einzelne Datenpunkte darstellen, in eine umzuwandeln Pivot-Format, bei dem Daten basierend auf Zeitstempeln in Spalten organisiert und Werte nach einem bestimmten Bezeichner gruppiert werden.

Um diese Pivot-Struktur zu erreichen, können wir die CASE-Anweisung in MySQL verwenden. Mit dieser Anweisung können wir Werte basierend auf verschiedenen Bedingungen bedingt zuweisen:

SELECT d.data_timestamp
, SUM( CASE WHEN data_id = 1 THEN data_value ELSE 0 END ) AS 'input_1'
, SUM( CASE WHEN data_id = 2 THEN data_value ELSE 0 END ) AS 'input_2'
...
, SUM( CASE WHEN data_id = 20 THEN data_value ELSE 0 END ) AS 'input_20'
FROM data
GROUP BY data_timestamp
ORDER BY data_timestamp ASC
Nach dem Login kopieren

In dieser Abfrage verwenden wir die SUM-Funktion, um den Datenwert für jeden einzelnen Datenzeitstempel zu aggregieren. Die CASE-Anweisung prüft, ob die data_id mit einem bestimmten Wert übereinstimmt (z. B. 1, 2 oder 20). Bei Übereinstimmung geht der entsprechende data_value in die Summierung für die jeweilige Spalte ein (z. B. input_1, input_2, input_20). Wenn keine Übereinstimmung gefunden wird, wird bei der Berechnung Null verwendet. Dies führt zu einer Tabelle, in der data_timestamp die Zeilenkennung ist und jede data_id über eine eigene Spalte verfügt, in der der entsprechende aggregierte data_value angezeigt wird.

Für den gleichen Zweck können wir auch die IF-Anweisung anstelle von CASE verwenden:

SELECT d.data_timestamp
, SUM( IF(data_id = 1, data_value, 0) ) AS 'input_1'
, SUM( IF(data_id = 2, data_value, 0) ) AS 'input_2'
...
, SUM( IF(data_id = 20, data_value, 0) ) AS 'input_20'
FROM data
GROUP BY data_timestamp
ORDER BY data_timestamp ASC
Nach dem Login kopieren

Sowohl der CASE- als auch der IF-Ansatz ermöglichen es uns, die erforderlichen Spalten dynamisch zu generieren und die Werte basierend auf data_id und data_timestamp zu aggregieren, um die Daten letztendlich im gewünschten Pivot-Format darzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten in MySQL mithilfe von „CASE'- oder „IF'-Anweisungen Pivotieren?. 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