MariaDB 中动态 PIVOT 列名称上的空格

Spaces on Dynamic PIVOT column name in MariaDB

我有这个非常简单的例子:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when NAME = ''',
      NAME,
      ''' then value end) AS ',
      replace(NAME, ' ', '_')
    )
  ) INTO @sql 
FROM
  sourcetable;

SET @sql = CONCAT('SELECT Date, ', @sql, ' from sourcetable group by date');


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

完整示例:dbfiddle

我希望 PIVOT table 中的列名称与之前在 NAME 列中的名称与之前存在的所有字符完全匹配。出于某种原因,我需要这个演示文稿,因为它在另一个系统中使用。

我该如何解决这个问题?某种另一种替代?

您可以用 accent graves 结束别名,而不是将 whitespaces 替换为 下划线

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
          CONCAT('MAX( CASE WHEN name = ''',NAME,''' THEN value END) AS `',NAME,'`')
  )
  INTO @sql 
  FROM sourcetable;

SET @sql = CONCAT('SELECT Date, ', @sql, ' FROM sourcetable GROUP BY date');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

Demo