sql >> Databasteknik >  >> RDS >> Mysql

mysql-fråga för att dynamiskt konvertera raddata till kolumner

Du kan helt enkelt inte ha en statisk SQL-sats som returnerar ett variabelt antal kolumner. Du måste bygga ett sådant uttalande varje gång antalet olika distrikt ändras. För att göra det, kör du först en

SELECT DISTINCT District FROM district_details;

Detta ger dig en lista över distrikt där det finns detaljer. Du bygger sedan en SQL-sats som itererar över det föregående resultatet (pseudokod)

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

Och kör den frågan. Du måste då i din kod hantera bearbetningen av det variabla antalet kolumner



  1. Hur man uppnår automatisk failover för TimescaleDB

  2. mysql anpassad global definierad variabel

  3. Hur man gör överlappande listor med mysql och php

  4. Ta bort utfyllnad när du skickar frågeresultat i ett e-postmeddelande från SQL Server (T-SQL)