Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL-Daten mit dynamischen Spaltenüberschriften in eine einzelne Zeile umwandeln?
Problem 1: Daten in einer einzigen Zeile abrufen
Sie können die PIVOT-Funktion verwenden um Ihre Daten in ein Einzelzeilenformat umzuwandeln. Die folgende Abfrage ändert Ihren vorherigen Versuch, dies zu erreichen:
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;
Diese Abfrage gruppiert die Zeilen nach app_id, transaction_id und mobile_no und verwendet die MAX-Funktion, um den maximal eingegebenen Wert für jede entsprechende node_id-Spalte abzurufen zu den „Q“-Werten, die Sie anzeigen möchten.
Problem 2: Spaltenwerte als Kopfzeile verwenden Namen
Um die Werte in der Spalte customer_attribute als Headernamen zu verwenden, können Sie die CASE-Anweisung in Verbindung mit dem Schlüsselwort AS verwenden. Die geänderte Abfrage lautet wie folgt:
SELECT app_id, transaction_id, mobile_no, MAX(CASE WHEN node_id = 1 THEN entered_value END) AS CASE customer_attribute WHEN 'Q1' THEN entered_value END, MAX(CASE WHEN node_id = 2 THEN entered_value END) AS CASE customer_attribute WHEN 'Q2' THEN entered_value END, MAX(CASE WHEN node_id = 3 THEN entered_value END) AS CASE customer_attribute WHEN 'Q3' THEN entered_value END, MAX(CASE WHEN node_id = 4 THEN entered_value END) AS CASE customer_attribute WHEN 'Q4' THEN entered_value END, MAX(CASE WHEN node_id = 5 THEN entered_value END) AS CASE customer_attribute WHEN 'Q5' THEN entered_value END FROM trn_user_log GROUP BY app_id, transaction_id, mobile_no;
In dieser Abfrage wird die CASE-Anweisung innerhalb der MAX-Funktion verwendet, um den eingegebenen Wert basierend auf übereinstimmenden customer_attribute-Werten auszuwählen. Das Schlüsselwort AS weist die passenden customer_attribute-Werte als Spaltenüberschriften zu.
Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Daten mit dynamischen Spaltenüberschriften in eine einzelne Zeile umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!