Pivot Tablas en MySQL con columnas dinámicas
esta pregunta aborda el desafío de crear tablas dinámicas mysql con columnas dinámicas. Mientras que la solución funciona de manera efectiva cuando user_id se define como una cadena, falla cuando se encuentra con los valores enteros.
El fragmento de código proporcionado ilustra el intento inicial de crear la tabla de pivote. Sin embargo, para resolver el problema relacionado con los valores enteros user_id, las correcciones se encuentran en la forma en que los nombres de la columna se construyen dentro de la consulta SQL dinámica.
el código original:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
int user_id Los valores están en causar el problema ya que se usan directamente como nombres de columnas. Para abordar esto, estos valores deben envolverse en backticks (`). El código corregido ajusta esto:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
la consulta final, corregida:
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;
Con estos ajustes, la tabla de pivote ahora se puede generar con éxito incluso cuando se trata de valores de user_id integer.
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