【发布时间】:2020-12-29 13:59:19
【问题描述】:
我需要您的帮助才能在 SQL Server (v12.0.6024.0) 中创建视图。我的一个客户有一个表格,其中一些时间段以这种格式保存:
| ID | ID_EVENT | Time Slot |
|---|---|---|
| 1000 | 24 | 08:30:00.0000 |
| 1000 | 24 | 09:00:00.0000 |
| 1000 | 24 | 09:30:00.0000 |
每个时间段持续 30 分钟,上面的示例表示 ID 为 24 的事件(保存在另一个表中)从 8:30 持续到 10:00(第三个时间段从 9:30 开始,持续了 30 分钟,所以它在10:00)。问题是在某些情况下时间值不是连续的,中间可能会有停顿,所以我会这样:
| ID | ID_EVENT | Time Slot |
|---|---|---|
| 1000 | 24 | 08:30:00.0000 |
| 1000 | 24 | 09:00:00.0000 |
| 1000 | 24 | 09:30:00.0000 |
| 1000 | 24 | 11:30:00.0000 |
| 1000 | 24 | 12:00:00.0000 |
| 1000 | 24 | 12:30:00.0000 |
在这种情况下,ID 为 24 的事件从 8:30 持续到 10,停止,然后从 11:30 到 13:00 再次开始。我被要求为外部开发人员准备一个视图,在该视图中,我不仅要报告事件开始的时间(在我的示例中,8:30)和它永久停止的时间(在我的示例中为 13:00),而且还有暂停开始的时间(在我的示例中为 10:00)和暂停结束的时间(在我的示例中为 11:30)。
我对前 2 个值没有问题,但我不知道如何提取其他两个值。我认为我们可以考虑当 2 个时隙不连续时发生暂停,同一事件不能有多个时段。我想我需要一个程序,但很难写;我需要有一个观点说
| ID | ID_EVENT | Time1 | Time2 | Time3 | Time4 |
|---|---|---|---|---|---|
| 1000 | 24 | 08:30:00.0000 | 10:00:00.0000 | 11:30:00.0000 | 13:00:00.0000 |
有什么帮助吗?
【问题讨论】:
-
到目前为止你尝试了什么?
-
如果有 2 个“暂停”会发生什么;你期待6个时间列吗?如果有 4 个,您是否期望 10 个时间列?如果是这样,那么您不能在
VIEW中执行此操作。 -
另外,您的标题说“故事”过程(我假设您的意思是存储过程),但您问题中的所有内容都在谈论
VIEW。VIEW和PROCEDURE是非常不同的对象类型。你实际上追求什么? -
嗨@Larnu,我必须准备一个视图;我想我需要编写一个过程来调用查询以提取 2 个缺失的字段。无论如何,我永远不会有 2 次暂停,每个过程都将包含一个或两个时间间隔。至于标题,我的意思显然是“Stored”,storied 是一个错字。
-
但是如果你想要一个存储过程,为什么你的问题中的所有内容都是关于
VIEW的?就像我说的,VIEW和PROCEDURE是非常 不同的对象类型。你实际上追求什么?
标签: sql sql-server datetime stored-procedures gaps-and-islands