MYSQL创建动态查询(Pivots)

时间:2018-02-01 11:20:47

标签: php mysql

我想获得按日期分组的cmb_scenarios。就像

romberg(fone(x),..)

但是在执行此查询时,我一直在“

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'scenario1,SUM(IF(DATE(datestamp)= 2018-01-08,1,0)附近)AS   _NULL,SUM(IF(DATE'at“。

我完成了本教程here,我的查询如下:

+----------------------------------+------+-------+-------+-------+
| cmb_scenario                     | 2017-05-10 | 2017-05-12 | 2017-06-7 | 2018-01-01 |
+----------------------------------+------+-------+-------+-------+
| scenario                                |    0 |     0 |     0 |     1 |
| scenario1                       | 1047 |   549 |   637 |   492 |
| scenario2                       |    0 |     1 |     2 |     5 |
| scenario3                       |    0 |     0 |     0 |     1 |
| scenario4                       |   23 |     3 |     1 |     0 |

我不知道我做错了什么,因为我按原样接受了教程。

Coulmns是:

SET @sql_dynamic = (SELECT GROUP_CONCAT( DISTINCT CONCAT('SUM( IF(DATE(datestamp) = ', DATE(datestamp), ', 1,0) ) AS _', DATE(datestamp))) FROM leases);

ET @sql = CONCAT('SELECT cmb_scenario, ', @sql_dynamic, ' FROM leases GROUP BY cmb_scenario WITH ROLLUP');

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

1 个答案:

答案 0 :(得分:0)

你需要在=',DATE(datestamp)的日期(日期戳)部分周围连接引号,你需要替换在AS _',DATE(datestamp)中返回的减号( - )