添加一列计算直到下一个事件的天数

时间:2016-03-07 16:23:23

标签: sql sql-server

对于给定的ID,我有一系列START_DATE。除了显示其他列之外,我还要添加一个新列,用于查找Id(人物)的START_DATE与其下一个START_DATE之间的差异。

基本上,想要找到他当前的START_DATE和他的下一个START_DATE之间的间隔,以及显示其他列。

例如,数据如下所示 enter image description here

我尝试按照以下方式执行此操作:

SELECT t.Id,t.START_DATE,(select top 1 s.START_DATE from dbo.MyTable t INNER JOIN dbo.MyTable s ON(t.Id = s.Id and t.START_DATE > s.START_DATE) GROUP BY t.patient_Id,t.START_DATE)

2 个答案:

答案 0 :(得分:1)

我认为这就是你需要的

SELECT t.Id,t.START_DATE,
       DATEDIFF(day,(select min(s.START_DATE) from dbo.MyTable s
                     where t.Id = s.Id and t.START_DATE < s.START_DATE),
                t.start_date)  as DifferenceInDays
FROM dbo.MyTable t

这会给你(在几天内,你可以改变它,如果你想)每个日期和下一个日期之间的差异

答案 1 :(得分:1)

如果您的SQL Server版本支持它,那么您可以使用LEAD窗口函数执行此操作,如下所示:

SELECT
    id,
    start_date,
    DATEDIFF(DAY, start_date, LEAD(start_date, 1) OVER (PARTITION BY id ORDER BY start_date)) AS days_until_next_start_date
FROM
    dbo.My_Table