SQL-查找特定日期之后最近的两个日期



尊敬的Stack Overflow社区,

我正在寻找患者id,其中第一次之后的两个连续日期不到7天。

因此,第2天和第1天date <= 7 之间的差异

以及CCD_ 2第3天和第2天之间的差异

示例:

ID           Date
1          9/8/2014
1          9/9/2014
1          9/10/2014
2          5/31/2014
2          7/20/2014
2          9/8/2014

对于患者1,随后的两个日期间隔不到7天。

然而,对于患者2,以下日期间隔超过7天(50天(。

我正在尝试编写一个SQL查询,该查询只输出患者id"1"。

谢谢你的帮助:(

您想使用lead(),但这很复杂,因为您只想在前三行使用。我想我会选择:

select t.*
from (select t.*,
             lead(date, 1) over (partition by id order by date) as next_date,
             lead(date, 2) over (partition by id order by date) as next_date_2,
             row_number() over (partition by id order by date) as seqnum
      from t
     ) t
where seqnum = 1 and
      next_date <= date + interval '7' day and
      next_date2 <= next_date + interval '7' day;

您可以尝试使用窗口函数lag((

select * from
(
select id,date,lag(date) over(order by date) as prevdate
from tablename
)A where datediff(day,date,prevdate)<=7

相关内容

  • 没有找到相关文章

最新更新