sql - 基于不同列的日期之间的天数

时间:2016-10-10 17:23:22

标签: sql

所以我一直在试验OVER和PARTITION BY,但还没有成功。

这是我所拥有的:2列; 1是序列号,将具有多个具有相同序列号的条目。第二个是约会。

我要做的是根据序列号计算2个日期之间的天数。我可以很容易地做日期,我无法弄清楚如何只计算特定序列号的日期之间的差异。

示例:序列号1234的日期为2016年1月1日,以下记录的序列号为1234,日期为2015年12月30日,因此差异为2天,以下记录的序列号为1234,日期为2015年12月27日所以差异是3天,但是下面的记录有序列号4321和12/25/2015的日期:减法需要在那里停止,因为序列号不同并重新开始寻找相同的4321序列号。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您的问题可以更好地格式化(更多数据,更少专业人士)

从我能收集的信息来看,这有帮助吗?

Declare @YourTable table (Serial int,SomeDate date)
Insert Into @YourTable values
(1234,'2016-01-01'),
(1234,'2015-12-30'),
(1234,'2015-12-27'),
(4321,'2015-12-25')

Select A.*
      ,NbrOfDays = DateDiff(DD,Lag(SomeDate,1,SomeDate) over (Partition By Serial Order By SomeDate),SomeDate)
 From  @YourTable A
 Order By Serial,SomeDate Desc

返回

Serial  SomeDate    NbrOfDays
1234    2016-01-01  2
1234    2015-12-30  3
1234    2015-12-27  0
4321    2015-12-25  0

答案 1 :(得分:-1)

SELECT serial_number,
       DATEDIFF( date, 
                 LEAD( date, 1 ) OVER ( PARTITION BY serial_number ORDER BY 
                 date DESC ) 
                ) AS count_days
  FROM table;