2

我是 php 和 mysql 的新手,我正在尝试使用以下代码创建交叉表查询:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT('SUM(IF(category = ''',category,''', duration,NULL))AS ',category)) INTO @sql

FROM tblnon_oeedata;

SET @sql = CONCAT('SELECT productionDay, ', @sql, ' FROM tblnon_oeedata GROUP BY productionDay');

PREPARE stmt FROM @sql;
EXECUTE stmt;

每次我运行它时,我都会收到错误消息:

#1064- 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“生产期间维护,SUM(IF(category = 'Breakdowns', duration,NULL))AS 附近使用正确的语法

我该如何解决这个问题,我真的被卡住了。提前致谢

4

1 回答 1

2

尝试这个:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT('SUM(IF(category = ''',category,''', duration,NULL))AS ''',category, '''')) INTO @sql

FROM tblnon_oeedata;

SET @sql = CONCAT('SELECT productionDay, ', @sql, ' FROM tblnon_oeedata GROUP BY productionDay');

PREPARE stmt FROM @sql;
EXECUTE stmt;
于 2013-12-24T06:13:01.683 回答