SQL Server 查询以查找间隔或 12 个月或更长时间的记录
Posted
技术标签:
【中文标题】SQL Server 查询以查找间隔或 12 个月或更长时间的记录【英文标题】:SQL Server query to find records with gap or 12 months or greater 【发布时间】:2016-02-02 14:32:24 【问题描述】:我有一个记录表,每条记录都有一个创建日期和一个用户 ID。
我正在尝试查找该给定用户的记录之间存在 12 个月或更大间隔的所有记录。我在 SQL Server 中编写的最简单的方法是什么?
select *
from records
where last record and lastest record is greater than 12 months.
【问题讨论】:
【参考方案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
模拟逻辑,尽管性能通常更差。
【讨论】:
以上是关于SQL Server 查询以查找间隔或 12 个月或更长时间的记录的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2008 查询以查找列中包含非字母数字字符的行
SQL Server 查询以查找数据库中所有用户的所有权限/访问权限