【发布时间】:2021-04-03 00:08:51
【问题描述】:
我想计算多行之间的时间基于:
- 第一名:姓名
- 2nd:事件类型 - 事件本身有条件,因为计算应适用于 24 小时。
条件:
如果第一个事件是“不可用”,则时间应从 00:00:00 到事件发生时间计算。 否则时间将根据“可用”与下一个“不可用”或“可用”之间的差异计算。 如果最后一个活动是“可用”,时间将从活动时间开始计算到 23:59:59
毕竟,计算的时间总和与一些其他信息应该插入到另一个表中。
表格如下所示:
| ID | Name | Type | Date-Time |
|---|---|---|---|
| 1 | X1 | Not Available | 2021-03-30 04:12:00 |
| 2 | X1 | Available | 2021-03-30 08:12:00 |
| 3 | X1 | Available | 2021-03-30 10:12:00 |
| 4 | X1 | Not Available | 2021-03-30 11:32:00 |
| 5 | X1 | Available | 2021-03-30 20:30:00 |
| 6 | X2 | Available | 2021-03-30 08:30:00 |
| 7 | X2 | Not Available | 2021-03-30 18:12:00 |
【问题讨论】:
-
请详细说明并提供所需的输出 - “第一”意味着什么 - 是按 ID 排序的吗?
-
“first”和“last”是否应该按名称分组?时间计算是否会跨越到不同的日子,还是会一直局限于同一天?
-
在您努力提供结果应该是什么样子时,请查看 LEAD() 和 LAG()
-
@Stu 不是按 ID 排序的,我把 ID 字段用于制作样品,但它是按名称排序的。
-
@jw11432 从 00:00:00 到 23:59:59,他们总是在同一天。是的,他们应该按“名称”分组
标签: sql-server