Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage, um Zeilendaten dynamisch in Spalten umzuwandeln

Sie können einfach keine statische SQL-Anweisung haben, die eine variable Anzahl von Spalten zurückgibt. Sie müssen eine solche Anweisung jedes Mal erstellen, wenn sich die Anzahl der verschiedenen Bezirke ändert. Dazu führen Sie zunächst ein

aus
SELECT DISTINCT District FROM district_details;

Dies gibt Ihnen die Liste der Bezirke, in denen es Details gibt. Anschließend erstellen Sie eine SQL-Anweisung, die über das vorherige Ergebnis (Pseudocode) iteriert

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;"

Und führen Sie diese Abfrage aus. Sie müssen dann in Ihrem Code die Verarbeitung der variablen Anzahl von Spalten behandeln