Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine MySQL-Kreuztabellenabfrage, um Daten von Zeilen in Spalten umzuwandeln?
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.
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.
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
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!