【问题标题】:SQL Server query to find records with gap or 12 months or greaterSQL Server 查询以查找间隔或 12 个月或更长时间的记录
【发布时间】:2016-02-02 14:32:24
【问题描述】:

我有一个记录表,每条记录都有一个创建日期和一个用户 ID。

我正在尝试查找该给定用户的记录之间存在 12 个月或更大间隔的所有记录。我在 SQL Server 中编写的最简单的方法是什么?

select * 
from records 
where last record and lastest record is greater than 12 months.

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您正在寻找lag()lead() 函数。这在 SQL Server 2012+ 中可用。

    select r.*
    from (select r.*,
                 lag(createddate) over (partition by userid order by createddate) as last_createddate
          from records r
         ) r
    where last_createddate is null or
          last_createddate < dateadd(year, -1, createddate);
    

    在早期版本的 SQL Server 中,您可以使用 outer apply 模拟逻辑,尽管性能通常更差。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2015-05-21
      • 1970-01-01
      • 2012-11-30
      • 2023-02-21
      • 1970-01-01
      相关资源
      最近更新 更多