表中行的SQL Server日期差异

时间:2018-09-27 20:13:23

标签: sql sql-server tsql sql-server-2008-r2

我有一个查询,将开始和结束时间分组在不同的行上,其中批号1是开始,批号2是停止时间,我需要对它们进行datediff。我尝试添加行号,并尝试执行日期差异行1、2、3和4等,但是没有运气。

因此,每当批次1和2在一起时,我必须对1和3、2和4进行日期比较。

这是我的数据:

RowNumber  OrderNumber  IDCode    DateVal              MilestoneID   BatchNumber
-------------------------------------------------------------------
1          5017555.1    4077213   2018-08-30 12:22:51.253  15           1
3          5017555.1    4081502   2018-09-05 12:41:08.817  16           2
2          5017555.1    4095474   2018-09-18 10:42:47.457  15           1
4          5017555.1    4095665   2018-09-18 12:07:11.083  16           2

1 个答案:

答案 0 :(得分:1)

LAG允许您从上一行中获取价值:

Select * 
datediff (day, LAG(DateVal) OVER (ORDER BY OrderNumber) ,DateVal ) 
From YourTable

您也可以使用Lead从下一行获取价值