2017-03-10 5 views
0

IDがstartDateとEndDateのIDを持つテーブルがSQL Server 2012にあります。IDがそれぞれ1,2,3および4の場合は差をつけたいと思いますID = 1のendDateにし、ID = 2のたstartDate間、私はアイデアを得るように見えることができないので、上、anyhelpは事前に非常に優れたおかげだろう:)異なるIDの同じテーブル内の2つの日付の差分が必要

答えて

2

lead()ウィンドウ関数を使用する:

select t.* 
    , DaysUntilNextStartDate = datediff(day,t.enddate,lead(startdate) over (order by id))+1 
from t 

使用方法:outer apply()

select t.* 
    , DaysUntilNextStartDate = datediff(day,t.enddate,n.startdate)+1 
from t 
    outer apply (
    select top 1 
     i.startdate 
    from t as i 
    where i.id > t.id 
    order by i.id asc 
    ) as n 

idが隙間なく、常にシーケンシャルであれば)自己加入を使用する:

select t.* 
    , DaysUntilNextStartDate = datediff(day,t.enddate,n.startdate)+1 
from t 
    left join t as n 
    on t.id+1 = n.id 
+0

おかげでたくさん助けのためにそれは助けるために – Faisal

+0

@Faisalハッピーに動作しているようです! – SqlZim

関連する問題