Maison >base de données >tutoriel mysql >Comment faire pivoter les résultats d'une requête dans MySQL à l'aide de GROUP BY ?
Transformez les lignes en colonnes dans une table MySQL à l'aide de la technique PIVOT ou GROUP BY.
PIVOTING, une technique de transformation de données, réorganise les données des lignes en colonnes. Dans ce cas, l'objectif est de regrouper les données par colonne spécifique, telle que l'horodatage, et d'afficher chaque valeur de données dans une colonne distincte.
Au lieu de la syntaxe PIVOT traditionnelle , qui n'est pas largement prise en charge dans MySQL, la fonction SUM() peut être utilisée conjointement avec les instructions CASE pour obtenir le résultat souhaité.
<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>
Alternativement, les instructions IF peut être utilisé dans la fonction SUM() pour obtenir le même résultat.
<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>
Une autre approche consiste à utiliser plusieurs instructions JOIN pour créer le résultat souhaité.
<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>
En utilisant ces techniques, vous pouvez facilement faire pivoter les résultats des requêtes dans MySQL à l'aide de GROUP BY.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!