我是mysql查询的新手,但我一直在获取查询。基本上,我希望日期以水平方式(列)分组为年和月(1月17日,2月17日...),如下图所示。


数据如下图所示:



请帮助创建查询。

最佳答案

您可以进行条件汇总-每个login_id一次,然后进行整体汇总,然后合并两个结果。

Select login_idindex,
  Sum(date_format(visitdate, '%Y%m')  = '201701' ) as jan_17,
  Sum(date_format(visitdate, '%Y%m')  = '201702' ) as feb_17,
  . . .,
  Count(*) as total
From your_table
Where visitdate between ? and ?
Group by login_idindex

Union all

Select null,
  Sum(date_format(visitdate, '%Y%m')  = '201701' ) as jan_17,
  Sum(date_format(visitdate, '%Y%m')  = '201702' ) as feb_17,
  . . .,
  Count(*) as total
From your_table
Where visitdate between ? and ?;


?替换为实际日期,如果要处理所有日期,请删除where子句。

关于mysql - Mysql计数查询按年和月水平分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43882938/

10-16 23:06