【发布时间】:2018-12-14 00:13:57
【问题描述】:
我有一个包含以下字段的简单 SQL 表:
- 事件开始(日期时间)
- 活动结束(日期时间)
- 事件描述(varchar)
里面的数据代表了一个连续的时间线,被不同类型的事件打破。每个 [Event End] 都会匹配一个 [Event Start] 字段(如链)。
我的挑战是,有些事件是相同的,例如:
Event Start Event End Event Description
1/1/2018 07:00:00 1/1/2018 07:30:00 Breakfast
1/1/2018 07:30:00 1/1/2018 07:40:00 Drive To Work
1/1/2018 07:40:00 1/1/2018 07:55:00 Drive To Work
1/1/2018 07:55:00 1/1/2018 12:00:00 Working
但我想要一个可以显示如下视图的 SQL 查询:
Event Start Event End Event Description
1/1/2018 07:00:00 1/1/2018 07:30:00 Breakfast
1/1/2018 07:30:00 1/1/2018 07:55:00 Drive To Work
1/1/2018 07:55:00 1/1/2018 12:00:00 Working
在我的表中,我可以有超过 2 个事件需要合并到一行中,以防您想知道我们是否只能做一个简单的 JOIN 并解决问题,可能需要应用递归方法,但我不知该如何。你知道如何构建 SQL 查询吗?
【问题讨论】:
-
你的列名中真的有空格吗?
-
不,为了简单起见,上面的示例丢弃了与此挑战无关的真实字段名称和其他字段。如果需要,您可以提供带有其他字段名称的查询。
-
处理真实的表名和列名通常更容易。如果问题比上面看到的更复杂,那么您的示例可能过于简化。
标签: sql-server