需要具有增强过滤器的MYSQL pivot

需要具有增强过滤器的MYSQL pivot,mysql,pivot-table,Mysql,Pivot Table,我将pe_date、pe_batch和pe_tarive列中的值旋转到新的c1、c2和c3列中。效果很好。但是现在我想从Date1和date2之间的pe_date中筛选日期值 在何处放置日期1和日期2之间的Where语句?我想不出来。谢谢你的帮助 SELECT t.submit_time, (SELECT field_value FROM mytable WHERE submit_time = t.submit_time AND field_name ='pe_date') as 'c1',

我将pe_date、pe_batch和pe_tarive列中的值旋转到新的c1、c2和c3列中。效果很好。但是现在我想从Date1和date2之间的pe_date中筛选日期值

在何处放置日期1和日期2之间的Where语句?我想不出来。谢谢你的帮助

SELECT t.submit_time,
 (SELECT field_value FROM mytable WHERE submit_time = t.submit_time AND field_name ='pe_date') as 'c1',
 (SELECT field_value FROM mytable WHERE submit_time = t.submit_time AND field_name ='pe_batch') as 'c2',
 (SELECT field_value FROM mytable WHERE submit_time = t.submit_time AND field_name ='pe_tarive') as 'c3'
FROM  mytable
GROUP BY t.submit_time
ORDER BY c1 ASC

我将使用数据透视逻辑编写以下内容:

SELECT
    submit_time,
    MAX(CASE WHEN field_name = 'pe_date'   THEN field_value END) AS c1,
    MAX(CASE WHEN field_name = 'pe_batch'  THEN field_value END) AS c2,
    MAX(CASE WHEN field_name = 'pe_tarive' THEN field_value END) AS c3
FROM mytable
WHERE
    -- some restriction on the date
GROUP BY
    submit_time;

从我所看到的,也许您只需要添加一个
WHERE
子句。对日期的限制唯一有意义的地方是
HAVING
子句。

谢谢Tim,添加:其中,虽然表中有足够的数据,但“2018-01-01”和“2019-01-01”之间的C1给出的结果为零:选择submit_time,MAX(当字段名称=“pe_日期”时,则字段值结束)作为C1,MAX(字段名称='pe\U batch'然后字段值END时的情况)作为c2,MAX(字段名称='pe\U tarive'然后字段值END时的情况)作为c3从wp\U cf7dbplugin\u按提交时间提交组,c1在'2018-01-01'和'2019-12-31'之间,另请参见