在schedule sql server中选择空闲时间

时间:2014-05-17 17:05:38

标签: sql sql-server sql-server-2014

我有一张这样的表:

    day      start        end
2013-01-02  08:00:00    12:00:00
2013-01-02  16:00:00    18:00:00
2013-01-02  23:00:00    03:00:00
2013-01-03  08:00:00    12:00:00
2013-01-03  16:00:00    18:00:00
2013-01-03  23:00:00    03:00:00

我想要做的是选择表格,结果如下:

     day      start        end
2013-01-02  12:00:00    16:00:00
2013-01-02  18:00:00    23:00:00

显示我在该时间表上的空闲时间,我已经尝试了几个小时不能重新分析如何做,请帮助

1 个答案:

答案 0 :(得分:0)

你似乎只想要中间时间。所以你可以使用lead()

select day, end, nextstart
from (select t.*, lead(start) over (partition by day order by start) as nextstart
      from table t
     ) t
where end <> nextstart;

(注意:为了清楚起见,我没有逃过保留字。你不应该将endday之类的列命名为保留字。)

如果您想要0:00-8:00,这会更具挑战性。