Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête mysql pour convertir dynamiquement les données des lignes en colonnes

Vous ne pouvez tout simplement pas avoir une instruction SQL statique renvoyant un nombre variable de colonnes. Vous devez créer une telle déclaration chaque fois que le nombre de districts différents change. Pour ce faire, vous exécutez d'abord un

SELECT DISTINCT District FROM district_details;

Cela vous donnera la liste des quartiers où il y a des détails. Vous construisez ensuite une instruction SQL itérant sur le résultat précédent (pseudocode)

statement = "SELECT name "

For each row returned in d = SELECT DISTINCT District FROM district_details 
    statement = statement & ", SUM(IF(District=""" & d.District & """,1 ,0)) AS """ & d.District & """" 

statement = statement & " FROM district_details GROUP BY name;"

Et exécutez cette requête. Vous devrez alors gérer dans votre code le traitement du nombre variable de colonnes