小编典典

MS Access:汇总时间大于24小时的查询再次从1重新开始

sql

我在MS Access程序中有一个表trans_hist,其中时间以短日期格式“ HH:MM”存储,例如:

[![图片] [1]] [1]

现在,我创建了一个查询,该查询告诉每个用户的总时间(只需简单地将时间相加),但是如果总时间超过24小时,它将重置并从00:15重新开始(所有时间均以15分钟为间隔存储)

问题:对于Customer(UID)1,总时间应该是32:30,但是显示为8:30

当前结果:

UID Time_Elapsed
1   5:00
1   8:30
1   9:00
1   6:00
2   2:15
2   2:00
3   1:15
5   4:00
1   4:00

结果:

[![图片] [2]] [2]

  • 数据

Cust_UID Trans_Date Agen_Name Prog_Name Prime_Serv Prime_Serv_Time 10014
15年12月13日LAC RA BMC 01:00 10021 15年12月14日LAC RA AP 01:00 10022 15-Dec-15 LAC
RA AP 01:00 10021 16-Dec-15 LAC RA SM 00:45 10020 15-Dec 15 LAC RA AP 01:00
10027 15-Dec 15 LAC RA DA 00:15 10028 18-Dec-15 LAC RA DA 00:15 10026
18-Dec-15 LAC RA DA 00 :15 10029 15-Dec-15 LAC RA DA 00:15 10030 18-Dec-15 LAC
RA DA 00:15 10031 18-Dec-15 LAC RA DA 00:15 10023 19-Dec-15 LAC RA Clinical
02:00 10023 20-Dec-15 LAC RA临床01:30 10023 20-Dec-15 LAC RA临床02:00 10020
15-Dec-15 LAC RA SM 00:15 10023 21-Dec-15 LAC RA SM 00:30 10022 22 –15年12月LAC
RA临床00:30 10022 15年12月22日LAC RA IB 00:30 10021 15年12月22日LAC RA IB 00:30 10009
15-Dec 15 LAC RA IB 00:30 10019 23-Dec-15 LAC RA STM 00:45 10009 15-Dec 15 LAC
RA Staff-In 00:30 10021 23-Dec 15 LAC RA Staff-In 00:30 10022 15年12月23日LAC
RA职员-在00:30 10024 23-Dec-15 LAC RA职员-00:30 10033 23-Dec 15 LAC RA职员-00:30
10025 23-Dec- 15 LAC RA临床00:45 10035 2015年12月28日LAC OA CA 05:00 10040
2015年12月28日LAC OA CA 05:00 10039 2015年12月28日LAC OA CA 05:00 10038 LAC 12月15 OA
CA 05:00 10042 15-Dec-15 LAC OA CA 05:00 10036 28-Dec-15 LAC OA CA 05:00 10037
28-Dec-15 LAC OA CA 05:00 10006 30-Dec-15 LAC Test 1 DA 01:45 10005 15-Dec-15
LAC测试2 DG 01:45 10015 30-Dec-15 LAC Test 2 IB 02:15 10015 30-Dec-15 LAC Test 4
DG 03:15 10019 30-Dec-15 LAC OA CA 15:30 10005 15年12月31日LAC OA CA 12:00

[数据] [3]

结果

Prog_Name Prime_Serv Total_Serv_Time OA CA 62:30 RA AP 3:0 RA BMC 1:0 RA临床7:45
RA DA 2:30 RA IB 2:30 RA人员-In 2:30 RA SM 2:30 RA STM 1:45测试1 DA 2:45测试2 DG
2:45测试2 IB 2:15测试4 DG 3:15

[结果] [4]


阅读 198

收藏
2021-04-14

共1个答案

小编典典

我希望此SQL查询有帮助:

SELECT T.UID,
       CSTR(total_hours 
                + INT(total_min / 60)) 
                + ":" 
                + CSTR(total_min Mod 60) as result
FROM
    (SELECT UID,
            SUM(HOUR(TH.time_elapsed)) AS total_hours,
            SUM(MINUTE(TH.time_elapsed)) AS total_min
    FROM trans_hist AS TH
    GROUP BY UID) AS T
2021-04-14