我有一个名为salary_raise
的表格,如下所示:
id | employee_id | salary | year | month | date
1 | 1 | 1000 | 2014 | 2 | 2014-01-30
2 | 1 | 1200 | 2015 | 3 | 2015-02-20
3 | 1 | 1300 | 2015 | 4 | 2015-03-29
......等多名员工。它仅在工资增加时保留记录(这可以在一段时间内随机发生)。
现在我可以提取一个看起来像$salary['year']['month'] = $salary_value
的数组:
[2014]
[2] => 1000
[2015]
[3] => 1200
[4] => 1300
我需要提取一份完整的报告,其中包含每月最新的工资(自动填写缺失的月份/年),例如:
[2014]
[2] => 1000
[3] => 1000
[4] => 1000
[5] => 1000
[6] => 1000
[7] => 1000
[8] => 1000
[9] => 1000
[10] => 1000
[11] => 1000
[12] => 1000
[2015]
[1] => 1000
[2] => 1000
[3] => 1200
[4] => 1300
[5] => 1300
我无法通过使用php和/或mysql来弄清楚如何做到这一点。 非常感谢!
答案 0 :(得分:1)
为了“填补空白”,您需要在某处获取信息。
在mysql中执行此操作的最简单方法是使用一些通用日历表,列出月份数,年份等单个值。
所以给定一个表months(month)
和一个表years(year)
,前者包含1..12
,后者包含2010..2017
(例如),我们可以{{1}这两个人每个月都会给我们一个月,然后cross join
left join
表格。
这将为我们留下一个包含一些条目和大量空值的表,因此我们需要使用一些变量来填充最后一个工资条目的salary_raise
值。
null
当然,您需要将此限制为不再检查日期 - 这应该很容易。