繁体   English   中英

PHP选择并按日期(月份和年份)以及用户分组

[英]PHP select and group by date (month and year) as well as user

我有一张桌子,上面有这样的信息:

id | staff_id | start_date
1  | 14       | 2015-04-02 00:00:00
2  | 16       | 2015-04-15 00:00:00
3  | 14       | 2015-05-31 00:00:00
4  | 12       | 2015-05-04 00:00:00

我想做的是选择并计算每个工作人员的所有条目,并按月和年对它们进行分组,以便显示如下:

Staff Member  | 12  | 14  | 16
2015-04       | 0   | 1   | 1
2015-05       | 1   | 1   | 0

谁能帮我弄清楚如何产生这个吗? 我只是想不出如何为每个工作人员创建一个新列,以及为每个月/年创建一行。

这是一个枢轴查询,但是由于日期原因而有些复杂:

select date_format(start_date, '%Y-%m') as yyyymm,
       sum(staff_id = 12) as `12`, sum(staff_id = 14) as `14`,
       sum(staff_id = 16) as `16`
from table t
group by yyyymm;

如果您事先不知道职员编号,则需要使用动态SQL。 谷歌“ MySQL动态枢纽”,看看如何做到这一点。

这称为交叉列表查询(又称为数据透视表)。 MySql本机不支持此类转换。

可能的解决方案:1.以传统方式按用户和月份生成计数,然后使用php将数据转换为最终结果集。 2.使用电子表格程序(例如Excel)根据传统数据集再次为您进行转换。 3.在MySql中有多种方法可以执行此操作,请参见link1link2

第二个链接是SO链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM