我在表格中有两行
empid date starttime finishtime total Work Hours
123 27/07/2016 21:00 3:30 6
123 28/07/2016 3:30 8:00 4
此查询根据存储过程的日期参数返回数据,我想要的是当我运行27/07/2016的存储过程时我应该得到
empid date starttime finishtime total Work Hours
123 27/07/2016 21:00 8:00 10
当我在2016年7月28日运行它时我什么也得不到
由于
答案 0 :(得分:0)
我有类似于Kannan Kandasamy的东西(我猜他的答案已被删除,因为我不再看到它了),只是我认为按日期分组也很重要。 我希望OP更具体,我只能推测OP正在寻找一种方法来累积小时数,就像第三班工人一样 - 一个工作时间从21:00开始到第二天早上8:00结束。现在,为了真正解决这个问题,该表应该有时间戳而不是日期和时间,因为这个表记录了一个异常,其中完成时间在同一天的开始时间之前,但只有一半的时间。 在这里被投票的风险是我的问题,以解决我对这个问题的高度推测性的想法:
SELECT
empid,
IF(starttime >= finishtime, `date`, DATE_ADD(`date`, INTERVAL -1 DAY)) AS `date`,
MAX(IF(starttime >= finishtime, starttime, NULL)) AS starttime,
MAX(IF(finishtime >= starttime, finishtime,NULL)) AS finishtime,
SUM(hours) AS hours
FROM
joe_table
WHERE
starttime IS NOT NULL
OR
finishtime IS NOT NULL
GROUP BY empid, 2;