【发布时间】:2017-10-03 06:55:31
【问题描述】:
MSSQL 2016
目前我有下表:
https://i.stack.imgur.com/W4GX6.png
OwnerName = Jan 这天从 07:00 到 15:30 工作。这意味着他的总工作时间应该是 8.5 小时。然而,当我总结总分钟数时,我得到了更多,因为他有重叠的活动。我如何排除这些重叠的活动并计算他这一天的总工作时间: 2017-09-12.
现在,此表不仅包含 2017 年 9 月 12 日的数据,而且每天都有计划的活动。所以查询也应该考虑到这一点。此外,此表中有多个所有者,即 Luc。这也是查询应该处理的问题。
有人可以帮助我吗? :)
编辑:为了让事情更清楚。结果应采用以下格式
|------------------------|------------------|----------------|
| Ownername | Date | Time in hours |
|------------------------|------------------|----------------|
| Jan | 2017-09-12 | 8.5 |
| Luc | 2017-09-12 | 8.5 |
| John | 2017-09-12 | 8.5 |
| Doe | 2017-09-11 | 7 |
| Jan | 2017-09-13 | 4 |
| Doe | 2017-09-14 | 8.5 |
| Tom | 2017-09-14 | 7 |
我目前的猜测是我首先必须确定哪些活动是重叠的。我想我必须使用 BETWEEN 语句来做到这一点。然后使用 CASE 语句不将此时间添加到当天的总时间(以小时为单位)。
【问题讨论】:
-
"这也是查询应该处理的问题。" - 也许是这样 - 但是以什么方式?您是在说应该处理事情,但没有明确说明您要寻找什么结果。您是否正在寻找所有所有者的单一总数?或者您是否正在寻找每个所有者每天的个人总数?或者是其他东西?这些选项中的任何一个都是“处理”所有数据。
-
请说明您尝试了什么以及阻止您继续进行的实际问题在哪里?现在看来你要求我们做你的工作;)
-
不,您的要求不清楚。您的解释与您的输入不一致。从您输入的 3 小时或 2.5 小时开始,Luc 的总工作时间是多少。请解释 1 或 2 个示例计算,包括重叠。
标签: sql sql-server