我的数据库结构如下:
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
从某一天开始的每一天。
答案 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 );