【发布时间】:2019-07-12 05:23:04
【问题描述】:
我有一个 Activity 列表,在每个段(StartTime、EndTime)中执行。活动具有定义的优先级(TASK = 7,CHAT = 10),其中 10 为最高。
+--------+------------------+------------------+----------+----------+
| UserID | StartTime | EndTime | ACTIVITY | PRIORITY |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:00 | 2019/07/01 09:15 | TASK | 7 |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:15 | 2019/07/01 09:45 | TASK | 7 |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:15 | 2019/07/01 09:45 | CHAT | 10 |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:45 | 2019/07/01 10:00 | TASK | 7 |
+--------+------------------+------------------+----------+----------+
我需要为每个用户的每个细分关联一个活动。也就是说,对于 09:15-09:45 段中的用户 ABCD,当前有 2 个活动(TASK 和 CHAT)。根据他们的优先级,应该将 CHAT 分配给这个部分。
会有多个用户的活动可以在一天中的不同时间开始/结束,解决方案需要考虑到这一点。
预期输出
+--------+------------------+------------------+----------+----------+
| UserID | StartTime | EndTime | ACTIVITY | PRIORITY |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:00 | 2019/07/01 09:15 | TASK | 7 |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:15 | 2019/07/01 09:45 | CHAT | 10 |
+--------+------------------+------------------+----------+----------+
| ABCD | 2019/07/01 09:45 | 2019/07/01 10:00 | TASK | 7 |
+--------+------------------+------------------+----------+----------+
场景数据
DECLARE @ActivityLog TABLE (UserID VARCHAR(20), Activity VARCHAR(8), Priority INT, StartTime DATETIME, EndTime DATETIME)
INSERT INTO @ActivityLog VALUES ('ABCD', 'TASK', 7, '2019/07/01 09:00', '2019/07/01 09:15');
INSERT INTO @ActivityLog VALUES ('ABCD', 'TASK', 7, '2019/07/01 09:15', '2019/07/01 09:45');
INSERT INTO @ActivityLog VALUES ('ABCD', 'CHAT', 10, '2019/07/01 09:15', '2019/07/01 09:45');
INSERT INTO @ActivityLog VALUES ('ABCD', 'TASK', 7, '2019/07/01 09:45', '2019/07/01 10:00');
我在这一点上陷入困境,试图弄清楚如何进一步解决这个问题。任何解决方案或建议将不胜感激。干杯。
【问题讨论】:
标签: sql sql-server tsql sql-server-2016