【发布时间】:2021-05-06 12:17:38
【问题描述】:
我正在使用 Oracle 并试图检索一个人在一年中不在办公室的总天数。我有 2 张桌子:
状态
1 - Active
2 - Out of the Office
3 - Other
日程安排历史
RecordID - primary key
PersonID
PreviousStatusID
NextStatusID
DateChanged
我可以很容易地找到这个人什么时候去度假,什么时候回来,使用
SELECT DateChanged FROM ScheduleHistory WHERE PersonID=111 AND NextStatusID = 2
和
SELECT DateChanged FROM ScheduleHistory WHERE PersonID=111 AND PreviousStatusID = 2
但是如果一个人去度假不止一次,我如何计算一个人离开办公室的总天数。仅给定 PersonID,是否可以通过编程方式进行操作?
这是一些示例数据:
RecordID PersonID PreviousStatusID NextStatusID DateChanged
-----------------------------------------------------------------------------
1 111 1 2 03/11/2020
2 111 2 1 03/13/2020
3 111 1 3 04/01/2020
4 111 3 1 04/07/2020
5 111 1 2 06/03/2020
6 111 2 1 06/05/2020
7 111 1 2 09/14/2020
8 111 2 1 09/17/2020
所以从上面的数据来看,对于 PersonID 111 的 2020 年,查询应该返回 7
【问题讨论】:
-
请提供样本数据和期望的结果。根据您的描述,您可能每天都有记录,然后将它们加起来。另外,超过一年的时间段呢?这些是如何处理的?
-
这仅适用于指定的时间范围 - 1 年。我添加了示例数据
-
你把周末算作不在办公室吗?
-
目前不在范围内的周末