Zeilen mithilfe der PIVOT- oder GROUP BY-Technik in Spalten in einer MySQL-Tabelle umwandeln.
PIVOTING, eine Datentransformationstechnik, ordnet Zeilendaten in Spalten neu an. In diesem Fall besteht das Ziel darin, Daten nach einer bestimmten Spalte, beispielsweise einem Zeitstempel, zu gruppieren und jeden Datenwert als separate Spalte anzuzeigen.
Anstelle der herkömmlichen PIVOT-Syntax , die in MySQL nicht allgemein unterstützt wird, kann die SUM()-Funktion in Verbindung mit CASE-Anweisungen verwendet werden, um das gewünschte Ergebnis zu erzielen.
<code class="sql">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</code>
Alternativ IF-Anweisungen kann innerhalb der SUM()-Funktion verwendet werden, um das gleiche Ergebnis zu erzielen.
<code class="sql">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</code>
Ein anderer Ansatz besteht darin, mehrere JOIN-Anweisungen zu verwenden, um die gewünschte Ausgabe zu erstellen.
<code class="sql">SELECT d.data_timestamp , d01.data_value AS 'input_1' , d02.data_value AS 'input_2' ... , d20.data_value AS 'input_20' FROM (SELECT DISTINCT d.data_timestamp FROM data ) AS d LEFT JOIN data AS d01 ON d01.data_timestamp = d.data_timestamp AND d01.data_id = 1 LEFT JOIN data AS d02 ON d02.data_timestamp = d.data_timestamp AND d02.data_id = 2 ... --- 20 JOINs LEFT JOIN data AS d20 ON d20.data_timestamp = d.data_timestamp AND d20.data_id = 20 ORDER BY d.data_timestamp ASC</code>
Durch die Verwendung dieser Techniken können Sie Abfrageergebnisse in MySQL mithilfe von GROUP BY ganz einfach Pivotieren.
Das obige ist der detaillierte Inhalt vonWie werden Abfrageergebnisse in MySQL mithilfe von GROUP BY geschwenkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!