如果我将列值更改为字符串,则MAX(IF())PIVOT会产生错误

时间:2016-11-16 10:26:13

标签: mysql

我有这个错误。

当我将列Question name值从int ex 1更改为字符串ex Q1时,我的查询现在会产生错误

Question name的值为integer数据类型时,我的第一个查询没有问题

enter image description here
但是,当我将值更改为字符串时,如下所示,它会产生错误

enter image description here 我使用这个查询

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(`Question name` = ', `Question name`, ',`mark`,NULL))')
  ) INTO @sql
FROM Question;

SET @sql = CONCAT('SELECT `User`.`id`, `User`.`name`, `Grade`.`grade`, ', @sql, ' 
                  FROM `User` join `Grade` on `User`.`id` = `Grade`.`user_id` 
                  join `Question` on `User`.`id` = `Question`.`user_id` GROUP BY `User`.`id`');

PREPARE stmt FROM @sql;
EXECUTE stmt;

1 个答案:

答案 0 :(得分:0)

您忘了添加引号 这样:

'MAX(IF(问题名称=',问题名称,',标记,空))')

应该是:

'MAX(IF(问题名称=“',问题名称,'”,标记,NULL))'