如果我有一个简单的表,其列的类型为DATE:
START_DATE 06/02/2013 05:30:00 AM 06/05/2013 12:00:00 PM 06/10/2013 01:45:00 AM
是否可以将小时数转到下一个START_DATE,例如:
START_DATE HOURS_TO_NEXT_START 06/02/2013 05:30:00 AM 78.5 06/05/2013 12:00:00 PM 109.75 06/10/2013 01:45:00 AM 0
请注意,此结果也可以:
START_DATE HOURS_FROM_PREVIOUS_START 06/02/2013 05:30:00 AM 0 06/05/2013 12:00:00 PM 78.5 06/10/2013 01:45:00 AM 109.75
因为在一天结束时,小时数是我真正感兴趣的......
我很确定CONNECT BY参与递归遍历此列表以检查下一个开始日期的时差,但我认为我需要帮助实际执行此操作。我在CONNECT BY上看到的所有示例似乎都解决了遍历并发列表的问题。
答案 0 :(得分:4)
尝试:
select start_date,
(lead(start_date,1) over (order by start_date)-start_date)*24
as hours_to_next_start
from myTable
SQLFiddle here。
答案 1 :(得分:0)
我想我刚刚找到了一个按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
再次感谢