2014-05-17 29 views
0

我有這樣的一個表:選擇日程SQL服務器的空閒時間

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 

我想要做的是選擇到thath導致該表:

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

顯示免費我已經在那個時間表上的時間,我一直在嘗試幾個小時不能重新分析如何做到這一點,請幫助

+0

您使用的是哪個版本的SQL Server? –

+0

Sql server 2014 – user3648078

+0

恭喜。 。 。我認爲你是sql-server-2014上的第50個標籤。 –

回答

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比較有挑戰性。

+0

thath工作,我不能看到空閒時間從03:00 - 8:00空閒時間你能幫我嗎? – user3648078

+0

@ user3648078,如果有幫助,請不要忘記通過點擊檢查按鈕來接受答案。 – Rahul