SQL数据库中的打开日期概述

时间:2016-09-26 07:35:46

标签: sql ms-access

我的数据库结构如下:

ID    Job ID    Person    Date    Begin    End

它记录了不同人员在某些工作上花费了多少时间来计算每项工作所花费的总时间。

我想要做的是创建一个尚未输入表格的所有时段的列表。或者,或者,列出所有日期,其中总时间不会累加到某个固定时间(比如8小时)。所有按人分组,因为有多个人。

不幸的是,我不知道如何开始。有什么想法让我去?

编辑:

示例数据:

ID    Job ID    Person    Date          Begin    End
1     0001      Bob       26/09/2016    08:00    09:00
2     0002      Bob       26/09/2016    09:00    11:00
3     0001      Bob       26/09/2016    11:00    16:00
4     0002      John      26/09/2016    08:00    14:00
5     0003      John      26/09/2016    14:00    14:30
6     0004      John      26/09/2016    14:30    15:00

我正在寻找的是一个可以给我的查询:

Person    Date          Begin    End
John      26/09/2016    15:00    16:00

或者,如果不可能:

Person    Date          Missing time
John      26/09/2016    01:00

从某一天开始的每一天。

2 个答案:

答案 0 :(得分:0)

最后一个选项可以简单如下:

Select 
    Person, [Date], CDate(#08:00# - Sum([End] - [Begin])) As MissingHours
From 
    JobTable
Group By 
    Person, [Date]
Having 
    CDate(#08:00# - Sum([End] - [Begin])) > #00:00#

答案 1 :(得分:0)

  

我想要做的是创建一个尚未输入表格的所有时段的列表

创建一个包含所有可能时段(a.k.a。日历表)的表格,然后进行反加入'到这个表,例如

SELECT *
  FROM CalendarTable c
 WHERE NOT EXISTS ( SELECT * 
                      FROM MyTable m
                     WHERE c.date BETWEEN m.start_date AND m.end_date );