【发布时间】:2016-04-05 23:08:54
【问题描述】:
美好的一天, 我正在使用动态数据透视查询按月生成产品销售的交叉表。产品刚刚超过 3K,这意味着超过 3k 列。当我运行查询时,我得到一个错误。如果我将原始表中的行数限制在 1586 以下,它运行良好,输出为 16 col,包括“日期”字段。我无法弄清楚这一点,需要一些帮助!请看下面的代码和错误:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(case when PSHDSTK = ''',
PSHDSTK,
''' then MthSales end) AS `',
PSHDSTK,
'`'
)
) INTO @sql
FROM salesbyrow;
SET @sql = CONCAT('SELECT thedate, ', @sql, '
FROM salesbyrow
GROUP BY thedate');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
我得到的错误是
[Err] 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 'FROM salesbyrow
GROUP BY thedate' at line 2
【问题讨论】:
-
如果您有 3000 个 行 和与您有几个月一样多的 列,输出会不会更易于管理?
-
这将是但不是为了我的目的。我需要它用于预测算法,它需要这种宽格式的数据。
-
好的。您可能必须在应用程序代码中进行透视。即取3列:月+产品+金额;然后做枢轴/交叉表。
标签: mysql pivot-table