【发布时间】:2021-02-20 15:26:42
【问题描述】:
我想根据时间将单行拆分为多行。以下是示例数据。
Status MachineId StartDate EndDate
---------------------------------------------------------------------------
RUN 1 2018-08-20 07:27:00.000 2018-08-20 08:23:00.000
IDLE 1 2018-08-20 08:23:01.000 2018-08-20 08:38:00.000
RUN 1 2018-08-20 08:38:01.000 2018-08-20 09:20:00.000
STOP 1 2018-08-20 09:20:01.000 2018-08-20 11:11:00.000
预期输出如下:
Status MachineId StartDate EndDate
---------------------------------------------------------------------------
RUN 1 2018-08-20 07:27:00.000 2018-08-20 07:59:59.000
RUN 1 2018-08-20 08:00:00.000 2018-08-20 08:23:00.000
IDLE 1 2018-08-20 08:23:01.000 2018-08-20 08:38:00.000
RUN 1 2018-08-20 08:38:01.000 2018-08-20 08:59:59.000
RUN 1 2018-08-20 09:00:00.000 2018-08-20 09:20:00.000
STOP 1 2018-08-20 09:20:01.000 2018-08-20 09:59:59.000
STOP 1 2018-08-20 10:00:00.000 2018-08-20 10:59:59.000
STOP 1 2018-08-20 11:00:00.000 2018-08-20 11:11:00.000
考虑到开始和结束时间,该小时的最后一个“事件”也会在接下来的几个小时内复制,直到发生新的事件更改。
【问题讨论】:
-
开始。您想达到什么目标?为什么您认为添加更多条目会更好地为您服务?
-
为什么当前表的记录要根据时间变化拆分成3条或4条记录?你确定这是最好的策略吗?
标签: sql sql-server datetime recursive-query