在办理登机手续时计算多个休息时间,查看时间限制

问题描述 投票:0回答:1

我的数据表看起来像这样

Attd_Date_Time        User_ID   Attd_Status
2018-03-02 09:32:12   1002018   CHECK_IN
2018-03-02 11:07:06   1002018   BREAK_IN
2018-03-02 11:25:07   1002018   BREAK_OUT
2018-03-02 16:01:27   1002018   BREAK_IN
2018-03-02 16:12:23   1002018   BREAK_OUT
2018-03-03 17:42:23   1002019   CHECK_OUT

Check_Duration是MIN(Check_IN)和MAX(Check_OUT)之间的分钟差。

Break_Duration是MIN(Break_IN)和MAX(Break_OUT)之间的微小差异。

我可以计算check_duration。但是我面临的问题是如果涉及多个Break_IN,BREAK_OUT。

首选输出为(持续时间为分钟):

User_ID   CHECK_DURATION   BREAK_DURATION
1002018   229              28
sql sql-server
1个回答
0
投票

这可能对你有所帮助。

 SELECT 
       DATEDIFF(mi, MIN(Attendance), MAX(Attendance)) AS Check_Duration,
        DATEDIFF(mi, MIN(CASE Status WHEN 'BREAK_IN' THEN Attendance END), MAX(CASE Status WHEN 'BREAK_OUT' THEN Attendance END)) AS BREAK_DURATION
       FROM #temp WHERE User_ID  =1002018
© www.soinside.com 2019 - 2024. All rights reserved.