如何解决我如何找到正确的交易 ID?
我正在尝试调整一个视图,以显示员工一天的上班时间和下班时间。
员工打卡上班,如果这是当天的第一个工作,它会得到一个“Y”的开始_转换,随后的工作得到一个“N”的开始_转换。工作有自己的打卡时间和下班时间。
目前我们的观点是有缺陷的。它使用 Where 子句将范围缩小到仅具有“Y”Starting_Trans 的事务。现在我有了员工上班的 Clock_In 时间。然后我们加入当天的最后一笔交易。现在我有了员工下班的 Clock_Out 时间。这通常是一个记录,并且有效。这是缺陷,有时员工在中午休假然后回来。我们的视图会将每个 Clock_In 时间与当天的最后一个 Clock_out 时间相匹配,而不是当天那个时段的 Clock_Out 时间。
在下表中,我执行了以下操作:
- 早上 6:00 开始工作,早上 7:00 离开。
-早上9点回来上班,9点45分完成任务,9点46分开始另一个任务,10点完成那个任务,10点01分开始另一个任务,中午离开。
- 下午1点回来工作,下午3点完成我的任务,下午3点01分开始另一个任务,下午4点离开。
原始数据:表名“Labor_Ticket” |交易_ID |员工_ID | Shift_Date |打卡时间 |时钟输出 |开始_Trans | | --- | --- | --- | --- | --- | --- | |1 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 06:00:00.000 | 2021-02-12 07:00:0.000 |是 | |2 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 09:00:00.000 | 2021-02-12 9:45:00.000 |是 | |3 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 09:46:00.000 | 2021-02-12 10:00:00.000 |否 | |4 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 10:01:00.000 | 2021-02-12 12:00:00.000 |否 | |5 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 13:00:00.000 | 2021-02-12 15:00:00.000 |是 | |6 | 9999 | 2021-02-12 00:00:00.000 | 2021-02-12 15:01:00.000 | 2021-02-12 16:00:00.000 |否|
想要的结果 |员工_ID | Shift_Date | In_Transaction_ID |打卡时间 | Out_Transaction_ID |时钟输出 | | --- | --- | --- | --- | --- | --- | | 9999 | 2021-02-12 00:00:00.000 | 1 | 2021-02-12 06:00:00.000 | 1 | 2021-02-12 07:00:0.000 | | 9999 | 2021-02-12 00:00:00.000 | 2 | 2021-02-12 09:00:00.000 | 4 | 2021-02-12 12:00:00.000 | | 9999 | 2021-02-12 00:00:00.000 | 5 | 2021-02-12 13:00:00.000 | 6 | 2021-02-12 16:00:00.000 |
当前视图
Select ilt.Employee_ID,ilt.Shift_Date,ilt.Transaction_ID As In_Transaction_ID,ilt.Clock_In,olt.Out_Transaction_ID,oltt.Clock_Out
From Labor_Ticket ilt
Inner Join (
Select Employee_ID,Shift_Date,Max(Transaction_ID) As Out_Transaction_ID
From Labor_Ticket
Group By Employee_ID,Shift_Date) As olt
On ilt.Employee_ID = olt.Employee_ID And ilt.Shift_Date = olt.Shift_Date
Inner Join LABOR_TICKET As oltt
On olt.Out_Transaction_ID = oltt.Transaction_ID
Where ilt.Shift_Date = '2/12/2021'
And ilt.Employee_ID = '9999'
And ilt.Starting_Trans = 'Y'
实际结果 |员工_ID | Shift_Date | In_Transaction_ID |打卡时间 | Out_Transaction_ID |时钟输出 | | --- | --- | --- | --- | --- | --- | | 9999 | 2021-02-12 00:00:00.000 | 1 | 2021-02-12 06:00:00.000 | 6 | 2021-02-12 16:00:00.000 | | 9999 | 2021-02-12 00:00:00.000 | 2 | 2021-02-12 09:00:00.000 | 6 | 2021-02-12 16:00:00.000 | | 9999 | 2021-02-12 00:00:00.000 | 5 | 2021-02-12 13:00:00.000 | 6 | 2021-02-12 16:00:00.000 |
如何让视图匹配每个时间段的适当 Out_Transaction_ID?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。