【发布时间】:2018-11-15 10:52:51
【问题描述】:
我有一张表格,可以计算一个人的工作时间。我们有一个夜间团队,可以在下午 4 点之后随时登录,并在第二天早上 8 点之前注销。该表如下所示。
Workdate WorkHour
2018-11-13 20 -- this was the hour they logged on
2018-11-13 21
2018-11-13 22
2018-11-13 23
2018-11-14 0
2018-11-14 1
2018-11-14 2
2018-11-14 3
2018-11-14 4
2018-11-14 5 -- this was the hour they logged off
出于报告的目的,我们只想将这些工作时间与他们首次登录的日期相关联,在本例中为 2018 年 11 月 13 日。我的理想输出如下所示。
Workdate WorkHour ReportingDate
2018-11-13 20 2018-11-13
2018-11-13 21 2018-11-13
2018-11-13 22 2018-11-13
2018-11-13 23 2018-11-13
2018-11-14 0 2018-11-13
2018-11-14 1 2018-11-13
2018-11-14 2 2018-11-13
2018-11-14 3 2018-11-13
2018-11-14 4 2018-11-13
2018-11-14 5 2018-11-13
关于如何做到这一点的任何想法?感谢任何帮助
杰斯
【问题讨论】:
-
您将需要使用窗口函数。您是否有唯一标识其中一名员工的字段?像 UserId 一样?
-
是的,我们有一个用户 ID 和一个用户名字段
-
我们可以假设一个人的停留时间永远不会超过 23 小时吗?
-
这是正确的
标签: sql sql-server datetime sql-server-2012 gaps-and-islands