Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 日期差,一列中的多个值相对于另一列中的多个值_Sql Server - Fatal编程技术网

Sql server 日期差,一列中的多个值相对于另一列中的多个值

Sql server 日期差,一列中的多个值相对于另一列中的多个值,sql-server,Sql Server,我需要计算一列中一行的日期(开始时间)和第二列中多行的日期(结束时间)(开始时间-结束时间)之间的差值(以天为单位),以便计算活动b、c、d、f的结束时间与e的开始时间之间的间隔时间。对于“结束时间”列中的每个活动,并按顺序将其分组。 上下文是活动e依赖于a、b、c、d、f,但我不知道这些活动的顺序,所以计划使用这些前一个活动的结束时间来将它们按实际顺序排列给e。(该日差也将形成后续步骤的psrt) 我是一个SQL新手,不知道如何才能做到这一点,或者这是否可能?您可以使用DATEDIFF(dat

我需要计算一列中一行的日期(开始时间)和第二列中多行的日期(结束时间)(开始时间-结束时间)之间的差值(以天为单位),以便计算活动b、c、d、f的结束时间与e的开始时间之间的间隔时间。对于“结束时间”列中的每个活动,并按顺序将其分组。 上下文是活动e依赖于a、b、c、d、f,但我不知道这些活动的顺序,所以计划使用这些前一个活动的结束时间来将它们按实际顺序排列给e。(该日差也将形成后续步骤的psrt) 我是一个SQL新手,不知道如何才能做到这一点,或者这是否可能?

您可以使用
DATEDIFF(datepart、startdate、enddate)

例如:

选择DATEDIFF(天、开始时间、结束时间)

这将在几天内返回差额


Read

我假设每个订单中的开始时间列有一个非空值:

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

如果你能提供我们期望的结果,那将是非常有帮助的。我已经添加了期望的结果,谢谢
 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