我有一个带有以下字段的简单SQL表:
里面的数据代表一个连续的时间轴,分为不同类型的事件。每个[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
在我的表中,我可以有两个以上的事件需要合并到单个行中,以防万一您想知道我们是否只能执行简单的JOIN并解决该问题,可能需要应用递归方法,但是我不知该如何。您知道如何构建SQL查询吗?
答案 0 :(得分:1)
您可以这样做:
select
"Event Description"
, min("Event Start") as "Event Start"
, max("Event End") as "Event End"
from that_table
group by
"Event Description"
但仅依靠描述可能是一个重大问题,例如拼写错误或偶然的多个空格可能会导致您意想不到的差异-或重复描述可能会看到任务“加入”不应加入。