同一个表的2个记录之间的日期差异

时间:2017-06-07 20:37:49

标签: sql sql-server

    table A             
       id     date1 date2       
row1    1   20170501    20170601        
row2    1   20170501    99991231        
row3    1   20170502    20170504        
row4    1   20170501    20170604        
row5    2   20170501    20170605        
row6    2   20170501    20170506        

我有改变要做,就是这样。我尝试使用etl,但结果并不令人满意。

将当前行(row1)的date1与下一个记录(row2)的date2进行比较,如果差异大于2天(+ positve),则只将该日期与该id一起获取。
在这种情况下,第2行是日期(即第2行的第2天),这必须一直运行,直到找到日期为止,如果找不到任何选择,则不能选择该记录。
请注意,我们必须根据id列以日期1降序排序,然后开始比较(日期2值默认为99991231为99999999)

1 个答案:

答案 0 :(得分:0)

给定的查询将为您提供给定日期1具有以下日期2的日期(以天为单位)。

SELECT id,date1
,DATEDIFF(day,date1,LEAD(date2) OVER (ORDER BY id ASC, date1 DESC)) as [DayDiff]
FROM [table A]

然后,您只需存储到临时表中并过滤2天以上的日期。

SELECT * FROM #tempTb WHERE [DayDiff] > 2