【发布时间】:2019-03-23 07:34:55
【问题描述】:
我有兴趣在 Microsoft SQL Server 查询中仅保留在两个不同日期的值超过特定阈值的个人。如果个人两次得分高于 150 并且第二次约会在第一次约会后至少 7 天,我想返回他们的 ID、第二次得分高于 150 的日期以及第二次约会的分数。
这是数据:
SubjectID DATE Score
001 01/11/2014 147
001 02/11/2013 151
002 02/10/2015 152
003 08/12/2013 155
002 01/31/2012 159
003 07/19/2016 157
所以我对于结果,我想返回以下内容:
SubjectID DATE Score
002 02/10/2015 152
003 07/19/2016 157
根据我之前提出的问题,我使用以下代码返回第二个日期:
SELECT *
FROM Clinic a
WHERE a.score > 150
AND a.date IN (SELECT MAX(b.date)
FROM Clinic b
WHERE b.subjectId = a.subjectId
AND b.score > 150)
我想我需要在 WHERE 语句中添加如下内容:
AND (b.date - a.date) > 7;
【问题讨论】:
-
什么版本的sql server? 2008 年、2012 年、2016 年? 2012 年以后允许
lag
标签: sql sql-server date sql-server-2017