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

时间:2015-10-02 15:49:53

标签: php mysql

我的表格有这样的信息:

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

任何人都可以帮我弄清楚如何生成这个?我只是想弄清楚如何为每个工作人员创建一个新列,以及每个月/每年创建一行。

2 个答案:

答案 0 :(得分:1)

这是一个透视查询,但由于日期而有点复杂:

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;

如果您事先不知道员工ID,那么您将需要使用动态SQL。谷歌“MySQL动态支点”,看看如何做到这一点。

答案 1 :(得分:0)

这称为交叉表格查询(又称数据透视表)。 MySql本身不支持这种转换。

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

第二个链接是SO链接。