我有一个查询,将开始和结束时间分组在不同的行上,其中批号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
答案 0 :(得分:1)
LAG允许您从上一行中获取价值:
Select *
datediff (day, LAG(DateVal) OVER (ORDER BY OrderNumber) ,DateVal )
From YourTable
您也可以使用Lead从下一行获取价值