我有以下来自指纹设备的数据,每个员工的进出都被记录下来。
UserId CheckTime CheckType
------ ----------- -----------
2 2020-08-03 08:15:12.053 I
2 2020-08-03 16:00:00.053 O
2 2020-08-04 08:00:12.053 I
2 2020-08-04 16:10:00.053 O
Run Code Online (Sandbox Code Playgroud)
我希望上述数据如下:
UserId CheckTime CommingTime LeavingTime
------ ----------- ----------- -------------
2 2020-08-03 08:15:12.053 16:00:00.053
2 2020-08-04 08:00:12.053 16:10:00.053
Run Code Online (Sandbox Code Playgroud)
**注意:**一个用户每天可以有多个 In Out 记录
我尝试了以下答案,但没有帮助:
任何的想法??
大意:
WITH cte AS ( SELECT UserId,
CheckTime,
LEAD(CheckTime) OVER (PARTITION BY UserId ORDER BY CheckTime) NextTime,
CheckType,
LEAD(CheckType) OVER (PARTITION BY UserId ORDER BY CheckTime) NextType )
SELECT UserId, CheckTime, NextTime
FROM cte
WHERE CheckType = 'I'
AND NextType = 'O'
Run Code Online (Sandbox Code Playgroud)
根据需要进行修改 - 提取日期和/或时间部分,检查日期部分是否相等等。
归档时间: |
|
查看次数: |
194 次 |
最近记录: |