ID连续两行之间的差异

时间:2018-06-28 00:46:15

标签: sql sql-server tsql

我正在尝试通过ID获取两个连续行之间的差异,两个日期在不同的列中。我在想,PARTITION BY必须与MAX 2 desc相结合,然后再获取MAX 1 asc……尽管如此,但逻辑上有些混乱。这是一个示例。

之前

ID  Start_date  End_date
1   1/1/2017    2/8/2017
1   2/10/2017   3/8/2017
1   3/21/2017   3/29/2017
1   4/11/2017   5/12/2017
2   4/2/2016    4/3/2016
2   4/6/2016    5/11/2016
3   4/25/2016   4/30/2016
3   5/25/2016   6/29/2016
3   7/13/2016   7/15/2016
3   7/18/2016   8/24/2016

之后

ID  Start_date  End_date    new
1   1/1/2017    2/8/2017    NULL
1   2/10/2017   3/8/2017    2
1   3/21/2017   3/29/2017   13
1   4/11/2017   5/12/2017   13
2   4/2/2016    4/3/2016    NULL
2   4/6/2016    5/11/2016   3
3   4/25/2016   4/30/2016   NULL
3   5/25/2016   6/29/2016   25
3   7/13/2016   7/15/2016   14
3   7/18/2016   8/24/2016   3

1 个答案:

答案 0 :(得分:2)

使用the lag function获取先前的值并在fetchLists(organizationId)中使用它。

datediff
  

LAG提供对在当前行之前的给定物理偏移量的行的访问。在SELECT语句中使用此分析函数可将当前行中的值与上一行中的值进行比较。