"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo crear una tabla dinámica dinámica en MySQL con nombres de columnas enteras?

¿Cómo crear una tabla dinámica dinámica en MySQL con nombres de columnas enteras?

Publicado el 2025-01-20
Navegar:318

How to Create a Dynamic Pivot Table in MySQL with Integer Column Names?

Tabla dinámica dinámica MySQL con nombres de columnas enteras

Crear una tabla dinámica dinámica con nombres de columnas enteras en MySQL plantea un pequeño desafío. Al ejecutar la consulta proporcionada, puede encontrar un error si los valores de user_id son números enteros. Para resolver este problema, necesitamos incluir los valores de user_id entre comillas invertidas (`).

La consulta SQL ajustada se ve así:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

La modificación clave aquí es la adición de comillas invertidas alrededor de los valores de user_id en la declaración GROUP_CONCAT. Al hacer esto, nos aseguramos de que los valores de user_id se traten como cadenas en lugar de nombres de columnas.

Demostración de SQL Fiddle: https://sqlfiddle.com/#!2/eab24/ 4

Ahora, incluso con valores enteros de user_id, la tabla dinámica dinámica se generará correctamente.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3