1

如果我有一个简单的表,其列的类型为 DATE,如下所示:

开始日期
2013 年 6 月 2 日上午 05:30:00
2013 年 6 月 5 日下午 12:00:00
2013 年 6 月 10 日上午 01:45:00

是否有可能获得下一个 START_DATE 的小时数,例如:

START_DATE HOURS_TO_NEXT_START
2013 年 6 月 2 日上午 05:30:00 78.5
2013 年 6 月 5 日下午 12:00:00 109.75
2013 年 6 月 10 日上午 01:45:00 0

请注意,此结果也可以:

START_DATE HOURS_FROM_PREVIOUS_START
06/02/2013 05:30:00 AM 0
2013 年 6 月 5 日 12:00:00 下午 78.5
2013 年 6 月 10 日 01:45:00 上午 109.75

因为在一天结束时,小时数是我真正感兴趣的......

我很确定 CONNECT BY 参与递归遍历此列表以检查与下一个开始日期的时间差,但我认为我需要帮助来实际执行此操作。我在 CONNECT BY 上看到的所有示例似乎都解决了遍历并发列表的问题。

4

2 回答 2

4

尝试:

select start_date,
       (lead(start_date,1) over (order by start_date)-start_date)*24 
            as hours_to_next_start
from myTable

SQLFiddle在这里

于 2013-06-20T20:30:14.667 回答
0

我想我刚刚找到了 group calc by ids 的答案

只需添加以下内容

select start_date,
   (lead(start_date,1) over (*PARTITION BY ID* order by start_date)-start_date)*24 
        as hours_to_next_start
from myTable

再次感谢

于 2014-03-20T17:25:39.653 回答