需要具有增强过滤器的MYSQL pivot
我将pe_date、pe_batch和pe_tarive列中的值旋转到新的c1、c2和c3列中。效果很好。但是现在我想从Date1和date2之间的pe_date中筛选日期值 在何处放置日期1和日期2之间的Where语句?我想不出来。谢谢你的帮助需要具有增强过滤器的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',
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'之间,另请参见