首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql -基于不同列的日期之间的天数

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

Stack Overflow用户
提问于 2016-10-10 17:23:21
回答 2查看 49关注 0票数 1

因此,我一直在尝试过份和分区,但没有成功。

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

我想做的是根据序列号计算两个日期之间的天数。我可以很容易地完成datediff,我不知道如何只计算特定序列号的日期之间的差异。

例如:序列号1234的日期为1/1/2016,下面的记录为序列号1234,日期为12/30/2015,因此差异为2天,下面的记录序列号为1234,日期为12/27/2015,因此差异为3天,但下面的记录的序列号为4321,日期为12/25/2015:减法需要停止,因为序列号不同,重新查找相同的4321序列号。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-10 18:19:11

你的问题可以更好地格式化(更多的数据,更少的优点)

据我所知,这有帮助吗?

代码语言:javascript
复制
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

返回

代码语言:javascript
复制
Serial  SomeDate    NbrOfDays
1234    2016-01-01  2
1234    2015-12-30  3
1234    2015-12-27  0
4321    2015-12-25  0
票数 0
EN

Stack Overflow用户

发布于 2016-10-10 17:30:18

代码语言:javascript
复制
SELECT serial_number,
       DATEDIFF( date, 
                 LEAD( date, 1 ) OVER ( PARTITION BY serial_number ORDER BY 
                 date DESC ) 
                ) AS count_days
  FROM table; 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39963584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档