在SQL中合并两行,并删除另一行

时间:2016-08-09 12:48:41

标签: mysql sql-server

我在表格中有两行

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日运行它时我什么也得不到

由于

1 个答案:

答案 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;