sql >> Base de Datos >  >> RDS >> Mysql

consulta mysql para convertir dinámicamente datos de fila a columnas

Simplemente no puede tener una instrucción SQL estática que devuelva un número variable de columnas. Debe generar dicha declaración cada vez que cambie el número de distritos diferentes. Para hacer eso, ejecuta primero un

SELECT DISTINCT District FROM district_details;

Esto le dará la lista de distritos donde hay detalles. Luego crea una declaración SQL iterando sobre el resultado anterior (pseudocódigo)

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

Y ejecutar esa consulta. Luego deberá manejar en su código el procesamiento del número variable de columnas