mysql - 使用 mysql 创建交叉表查询

标签 mysql sql select prepared-statement dynamicquery

我是 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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Maintenance During Production,SUM(IF(category = 'Breakdowns', duration,NULL))AS ' at line 1

如何解决这个问题,我真的很困惑。提前致谢

最佳答案

试试这个:

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;

关于mysql - 使用 mysql 创建交叉表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755759/

相关文章:

当至少满足 x 列中的条件时,MYSQL 选择行?

mysql在同一个查询中获取不同的数据

mysql - 内部连接错误

java - Hibernate + Spring with Oracle - 使用分层查询(START WITH + CONNECT BY)

mysql - SQLQuery - 对单个表中按第三个值分组的 2 个值的范围内的值进行计数

mysql - 如何禁止在mysql中创建myisam表?

mysql - SOLVE - 在特定条件下对行列求和

sql-server - SQL 连接和计数

javascript - 从选项 html 标记中检索值并传递给另一个 servlet

C - 使用 fork()、pipe()、select()、execl() 和 write() 未达到正确的结尾