在 MySQL 中创建带有整数列名的动态数据透视表是一个小小的挑战。运行提供的查询时,如果 user_id 值为整数,则可能会遇到错误。要解决这个问题,我们需要将 user_id 值用反引号 (`) 括起来。
调整后的 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;
此处的关键修改是在 GROUP_CONCAT 语句中的 user_id 值周围添加反引号。通过这样做,我们确保 user_id 值被视为字符串而不是列名。
SQL Fiddle 演示: https://sqlfiddle.com/#!2/eab24/ 4
现在,即使使用整数 user_id 值,也将成功生成动态数据透视表。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3