order #| activity | start time | end time |daydiff
a b null dd/mm/yyyy e-b
a c null dd/mm/yyyy e-c
a d null dd/mm/yyyy e-d
a e dd/mm/yyyy null null
a f null dd/mm/yyyy e-f
我需要计算一列中一行的日期(开始时间)和第二列中的多行(结束时间)(开始时间 - 结束时间)之间的天数差异,这样我就可以计算出活动b,c,d,f的结束时间相对于e的开始时间。对于end_time列中的每个活动,并按顺序对其进行分组。 上下文是活动e依赖于a,b,c,d,f但我不知道这些活动的顺序,所以计划使用这些前任活动的结束时间来对它们进行e实际排序。 (这一天差异也将形成后一步的psrt) 我是一个SQL新手,不知道我怎么能做到这一点,或者它是否可能?
答案 0 :(得分:0)
您可以使用DATEDIFF( datepart , startdate , enddate )
示例:
SELECT DATEDIFF( day , starttime , endtime );
这将以天为单位返回您的差异。
阅读more
答案 1 :(得分:0)
我假设每个订单中有一个start_time列的非null值:
Select o1.*, datediff(dd, o2.StartDate, o1.EndDate) as DayDiff from Orders o1
join Orders o2 on o1.OrderID = o2.OrderID and o2.StartTime is not null