SQL数据库中的开放日期概述
我的数据库结构如下:SQL数据库中的开放日期概述,sql,ms-access,Sql,Ms Access,我的数据库结构如下: ID Job ID Person Date Begin End 它记录了不同的人在某些工作上花费的时间,以便计算每个工作上花费的总时间 我想做的是创建一个列表,列出所有尚未输入表中的时隙。或者,也可以列出总时间不等于某个固定时间(比如8小时)的所有日期。由于有多人,所有人都按人分组 不幸的是,我不知道如何开始。有什么想法可以让我走吗 编辑: 样本数据: ID Job ID Person Date Begin
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
从给定的一天开始的每一天。最后一个选项可以简单到:
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#
最后一个选项可以简单到:
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#
我想做的是创建一个列表,列出所有尚未输入表中的时隙
创建一个包含所有可能时间段的表(也称为日历表),然后对此表执行“反联接”,例如
SELECT *
FROM CalendarTable c
WHERE NOT EXISTS ( SELECT *
FROM MyTable m
WHERE c.date BETWEEN m.start_date AND m.end_date );
我想做的是创建一个列表,列出所有尚未输入表中的时隙
创建一个包含所有可能时间段的表(也称为日历表),然后对此表执行“反联接”,例如
SELECT *
FROM CalendarTable c
WHERE NOT EXISTS ( SELECT *
FROM MyTable m
WHERE c.date BETWEEN m.start_date AND m.end_date );
标记您正在使用的dbms。(在日期/时间方面,许多数据库远远不符合ANSI SQL。)添加示例表数据和预期结果。标记您正在使用的dbms。(当涉及到日期/时间时,它们中的许多都远远不符合ANSI SQL。)添加示例表数据和预期结果。如果没有输入,天会怎么样?它们不会出现在这个查询中,是吗?不会。为此,创建一个返回总列表的查询,并在一个新的查询中使用它,该查询与上面的查询有外部连接。那么没有输入的天数呢?它们不会出现在这个查询中,是吗?不会。为此,创建一个返回总列表的查询,并在一个新查询中使用它,该查询与上面的查询有外部联接。