我对两个日期之间的搜索记录不熟悉,并且显示按月份(从一月到十二月)排序的记录。
我有这样的 table 。
Employee | Salary | Date from | Date To
John A. | 15000 | 2013-05-26 | 2013-06-10
Mark | 15000 | 2013-05-26 | 2013-06-10
John A. | 15000 | 2013-06-11 | 2013-06-25
Mark | 20000 | 2013-06-11 | 2013-06-25
我希望报告像这样显示。
Employee | 26 May - June 10 | 11 June - 25 June | So on..
John A. | 15000 | 15000
Mark | 15000 | 20000
请查看我的代码。这只会搜索两个日期之间的记录
SELECT *
FROM payroll
WHERE datefrom >= '2013-01-01'
AND dateto < '2013-12-31'
请告诉我如何解决这个问题。
最佳答案
您需要对数据进行透视,不幸的是在mysql中,透视是静态的,因此您需要为每种情况编写它(但您可以使用脚本来做到这一点),下面您有一个仅用于示例数据的示例,但它可以待续。
试试这个:
SELECT
employee,
SUM(IF(datefrom='2013-05-26' AND dateto='2013-06-10',Salary,0)) as `26 May - June 10`,
SUM(IF(datefrom='2013-06-11' AND dateto='2013-06-25',Salary,0)) as `11 June - 25 June`
FROM
payroll
WHERE
datefrom >= '2013-01-01'
AND dateto < '2013-12-31'
GROUP BY
employee
关于php - 在两个日期之间搜索并按月份排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336869/