所以我一直在试验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序列号。
非常感谢任何帮助。
答案 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;