MySQL 中具有动态列的数据透视表
此问题解决了创建具有动态列的 MySQL 数据透视表的挑战。虽然该解决方案在将 user_id 定义为字符串时有效,但在遇到整数值时会失败。
提供的代码片段说明了创建数据透视表的初始尝试。但是,为了解决与整数 user_id 值相关的问题,更正在于动态 SQL 查询中构造列名称的方式。
原始代码:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
int user_id值导致了问题,因为它们直接用作列名。为了解决这个问题,这些值需要用反引号 (`) 括起来。更正后的代码对此进行了调整:
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
最终更正后的查询:
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;
通过这些调整,即使在处理整数 user_id 值时,现在也可以成功生成数据透视表。
以上是如何使用整数用户 ID 在 MySQL 中创建动态数据透视表?的详细内容。更多信息请关注PHP中文网其他相关文章!