将特定的mysql查询转换为常规查询

时间:2018-02-28 06:28:13

标签: mysql

我有一个MySQL查询,它根据我存储在主表的单独表中的某些数据生成一个数据透视表。数据透视表的查询是

SET @sql = NULL;
SET @@group_concat_max_len = 5000;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(cropname = ''',
      cropname,
      ''', quantity, NULL)) AS ''',
      cropname,''''
    )
  ) INTO @sql
FROM
  tempcrop;

SET @sql = CONCAT('SELECT date, SUM(quantity),', @sql, ' FROM tempcrop Group By date');

  PREPARE stmt FROM @sql;
  EXECUTE stmt;

现在我需要转换此查询,以便我不必创建单独的表,并且可以使用主表直接创建数据透视表。

我从中查询'Tempcrop'表的数据

Select str_to_date(timestamp, '%Y-%m-%d') Timestamp, value as Cropname, Count(*) Quantity from logs where key='crop_selected' 
GROUP BY STR_TO_DATE(Timestamp,'%Y-%m-%d'), Value
ORDER BY STR_TO_DATE(Timestamp,'%Y-%m-%d'), COUNT(*) DESC;

如何在不使用Tempcrop表的情况下直接从此查询创建数据透视表。

0 个答案:

没有答案