You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MS SQL Server按班次聚合动作日志数据的SQL查询需求

基于MS SQL Server的操作日志班次聚合查询

现有Action_Log表记录单名员工的操作及对应时间戳,无员工排班表,需仅依靠日志将操作按预设班次类型(ShiftA:11:00-23:00、ShiftB:13:00-21:00)聚合,区分不同班次编号。

原表结构及示例数据

Action_IDAction_DTTM
104/19/2023 11:15:37
204/19/2023 12:16:14
304/19/2023 12:16:14
404/19/2023 14:21:03
504/19/2023 16:55:41
604/19/2023 18:10:43
704/19/2023 20:24:15
804/19/2023 22:43:29
904/20/2023 13:21:04
1004/20/2023 13:55:57
1104/20/2023 13:55:57
1204/20/2023 16:28:11
1304/20/2023 17:35:45
1404/20/2023 18:48:01
1504/20/2023 19:32:26
1604/20/2023 20:16:39
1704/20/2023 21:03:25

期望输出

Action_IDShift_NumberShift_Type
11ShiftA
21ShiftA
31ShiftA
41ShiftA
51ShiftA
61ShiftA
71ShiftA
81ShiftA
92ShiftB
102ShiftB
112ShiftB
122ShiftB
132ShiftB
142ShiftB
152ShiftB
162ShiftB
172ShiftB

实现SQL查询

WITH ShiftInfo AS (
    SELECT 
        Action_ID,
        Action_DTTM,
        -- 优先匹配ShiftB,剩余符合ShiftA时段的归类为ShiftA
        CASE 
            WHEN CAST(Action_DTTM AS TIME) BETWEEN '13:00:00' AND '21:00:00' THEN 'ShiftB'
            WHEN CAST(Action_DTTM AS TIME) BETWEEN '11:00:00' AND '23:00:00' THEN 'ShiftA'
            -- 若存在超出两个班次的时间,可根据需求自定义逻辑,这里暂归为ShiftA
            ELSE 'ShiftA'
        END AS Shift_Type,
        CAST(Action_DTTM AS DATE) AS Action_Date
    FROM Action_Log
),
ShiftNumber AS (
    SELECT 
        Action_Date,
        Shift_Type,
        DENSE_RANK() OVER (ORDER BY Action_Date, Shift_Type) AS Shift_Number
    FROM ShiftInfo
    GROUP BY Action_Date, Shift_Type
)
SELECT 
    si.Action_ID,
    sn.Shift_Number,
    si.Shift_Type
FROM ShiftInfo si
JOIN ShiftNumber sn ON si.Action_Date = sn.Action_Date AND si.Shift_Type = sn.Shift_Type
ORDER BY si.Action_ID;

逻辑说明

  1. ShiftInfo CTE:提取操作日期,将每个操作的时间转换为时段后,优先匹配ShiftB的时间范围,剩余符合ShiftA时段的操作归类为ShiftA;
  2. ShiftNumber CTE:按日期+班次类型分组,用DENSE_RANK()生成连续的班次编号;
  3. 最后关联两个CTE,输出每个操作对应的班次编号和类型。

内容的提问来源于stack exchange,提问作者crackersNcheese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:53:09