Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine MySQL-Kreuztabellenabfrage, um Daten von Zeilen in Spalten umzuwandeln?

Wie erstelle ich eine MySQL-Kreuztabellenabfrage, um Daten von Zeilen in Spalten umzuwandeln?

Barbara Streisand
Barbara StreisandOriginal
2025-01-06 10:42:42717Durchsuche

How to Create a MySQL Crosstab Query to Pivot Data from Rows to Columns?

MySQL-Pivot-/Kreuztabellenabfrage: Transformieren von Daten für eine verbesserte Anzeige

Eine Kreuztabellen- oder Pivotabfrage in MySQL ermöglicht Ihnen die Transformation von Daten, normalerweise von einer zeilenorientierten Struktur in eine eine spaltenorientierte Version, die eine einfachere Analyse und Präsentation erleichtert. Um zu verstehen, wie eine Kreuztabellenabfrage verwendet wird, schauen wir uns ein praktisches Beispiel an.

Beispiel: Pivotieren von Daten in ein spaltenorientiertes Format

Stellen Sie sich eine Tabelle mit der folgenden Struktur vor:

app_id  transaction_id  mobile_no  node_id  customer_attribute  entered_value
100     111             9999999999  1        Q1                  2
100     111             9999999999  2        Q2                  1
100     111             9999999999  3        Q3                  4
100     111             9999999999  4        Q4                  3
100     111             9999999999  5        Q5                  2
100     222             8888888888  4        Q4                  1
100     222             8888888888  3        Q3                  2
100     222             8888888888  2        Q2                  1
100     222             8888888888  1        Q1                  3
100     222             8888888888  5        Q5                  4

Sie möchten diese Datensätze im folgenden Format anzeigen:

app_id  transaction_id  mobile     Q1  Q2  Q3  Q4 | Q5
100    111             9999999999   2   1   4  3  2
100    222             8888888888   3   1   2  1  4

Um dies zu erreichen, müssen Sie kann eine Kreuztabellenabfrage verwenden. Bei Ihrem ersten Versuch haben Sie jedoch mehrere Zeilen für jeden Datenpunkt abgerufen, was nicht das gewünschte Ergebnis ist.

Korrigierte Kreuztabellenabfrage

Die folgende angepasste Abfrage liefert das gewünschte Ergebnis:

SELECT app_id, transaction_id, mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no

Kundenattribute als Spaltenüberschriften verwenden

Sie haben auch den Wunsch geäußert, Werte aus der Spalte „customer_attribute“ zu verwenden als Spaltenüberschriften. Obwohl die Funktion NAME_CONST für diesen Zweck nicht geeignet ist, können Sie eine Technik verwenden, die möglicherweise das gewünschte Ergebnis erzielt. Bitte geben Sie jedoch weitere Erläuterungen zu Ihrem gewünschten Ergebnis an, um eine präzise Lösung zu ermöglichen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine MySQL-Kreuztabellenabfrage, um Daten von Zeilen in Spalten umzuwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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