0
IDがstartDateとEndDateのIDを持つテーブルがSQL Server 2012にあります。IDがそれぞれ1,2,3および4の場合は差をつけたいと思いますID = 1のendDateにし、ID = 2のたstartDate間、私はアイデアを得るように見えることができないので、上、anyhelpは事前に非常に優れたおかげだろう:)異なるIDの同じテーブル内の2つの日付の差分が必要
IDがstartDateとEndDateのIDを持つテーブルがSQL Server 2012にあります。IDがそれぞれ1,2,3および4の場合は差をつけたいと思いますID = 1のendDateにし、ID = 2のたstartDate間、私はアイデアを得るように見えることができないので、上、anyhelpは事前に非常に優れたおかげだろう:)異なるIDの同じテーブル内の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
おかげでたくさん助けのためにそれは助けるために – Faisal
@Faisalハッピーに動作しているようです! – SqlZim