【问题标题】:I think I need a loop in an MS Access Query我想我需要一个 MS Access 查询中的循环
【发布时间】:2018-05-21 20:57:19
【问题描述】:

我有一个用户登录和注销时间表,表如下所示:

| ID | User |    WorkDate    |  Start   |  Finish  |
|  1 | Bill |     07/12/2017 | 09:00:00 | 17:00:00 |
|  2 | John |     07/12/2017 | 09:00:00 | 12:00:00 |
|  3 | John |     07/12/2017 | 12:30:00 | 17:00:00 |
|  4 | Mary |     07/12/2017 | 09:00:00 | 10:00:00 |
|  5 | Mary |     07/12/2017 | 10:10:00 | 12:00:00 |
|  6 | Mary |     07/12/2017 | 12:10:00 | 17:00:00 |

我正在运行一个查询来找出每个用户休息的长度,方法是运行完成的最小值和开始的最大值之间的日期差异,然后执行一些其他求和/查询来找出他们的休息时间.

这适用于我每个 WorkDate 的每个用户最多有两行,所以第 1、2、3 行给了我可用的数据。

第 4、5、6 行没有。

长话短说,我如何在查询中根据 MS Access 中的上述数据计算休息时间。我假设我需要一些循环语句,但不知道从哪里开始。

【问题讨论】:

  • 为什么你不能计算每行的总时间,然后按UserWorkDate 分组以获得每个用户/工作日期的总分钟数。然后从 480(8 小时 * 60 分钟)中减去总分钟数。这会给你休息时间。
  • 我的第一个想法。英雄所见略同!它可以工作 8 小时轮班,但有些用户的工作时间超过 8 小时,有些用户的工作时间少于 8 小时。计算休息时间的唯一方法是将“缺失”时间加在一起,

标签: sql loops ms-access while-loop


【解决方案1】:

这是首先想到的解决方案。

获取最小/最大开始和结束时间的第一个查询。

第二个查询使用您的最小(开始时间)和最大(结束时间)查询计算每天的总工作时间。

第三次查询计算每个班次的总工作时间(开始时间和结束时间之间的时间差),然后每天求和。

第四个查询计算第二个查询的总时间与第三个查询的总时间之间的差。差异为您提供了他们所花费的休息时间。

如果您需要其他帮助,我可以提供一些示例查询的屏幕截图。

【讨论】:

  • 拜托,我现在不在办公室,但可以提供我自己的截图,我想我可能已经完成了你的建议。
  • 我按要求添加了屏幕截图。如果您有任何问题,请告诉我。
  • 谢谢布兰登,我到办公室会试试这个!
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
相关资源
最近更新 更多