【问题标题】:Getting the most recent Modified Date older than 7 days per record with multiple dates获取每条记录超过 7 天且具有多个日期的最近修改日期
【发布时间】:2019-07-16 22:51:50
【问题描述】:

我正在尝试获取修改日期超过 7 天的 ID 的最新记录,但是,结果返回该 ID 的所有记录超过 7 天的记录。

SELECT USERID
FROM [PROJ]
INNER JOIN [NOTES] ON [PROJ].id = [NOTES].projID
WHERE [PROJ.STATUS] = 'ACTIVE'
  AND [NOTES.MODIFIEDDATE] <= GETDATE() - 7

返回:

project              userId        modifieddate
 1. 20190101              6           07/02/2019 *
 2. 20190101              6           07/01/2019
 3. 20190101              6           06/29/2019
 4. 20190102              7           07/04/2019 *
 5. 20190102              7           07/03/2019

* 是我期望返回的。 这将返回所有 ID 注释的所有记录,修改日期

【问题讨论】:

  • 编辑您的问题并 (1) 提供一个数据库标签。 (2) 限定列名,以便清楚它们的来源。

标签: sql sql-server


【解决方案1】:

尝试添加一个有子句

SELECT USERID
FROM [PROJ]
INNER JOIN [NOTES] ON [PROJ].id = [NOTES].projID
WHERE [PROJ.STATUS] = 'ACTIVE'
  AND [NOTES.MODIFIEDDATE] <= GETDATE() - 7 
GROUP BY USERID
HAVING MAX([NOTES.MODIFIEDDATE])

编辑: 如果你只想要最新的,那么我会完全摆脱

AND [NOTES.MODIFIEDDATE] <= GETDATE() - 7 

SELECT USERID
    FROM [PROJ]
    INNER JOIN [NOTES] ON [PROJ].id = [NOTES].projID
    WHERE [PROJ.STATUS] = 'ACTIVE'
    GROUP BY USERID
    HAVING MAX([NOTES.MODIFIEDDATE])

EDIT2:

SELECT USERID
    FROM [PROJ]
    INNER JOIN [NOTES] ON [PROJ].id = [NOTES].projID
    WHERE [PROJ.STATUS] = 'ACTIVE'
      AND [NOTES.MODIFIEDDATE] <= GETDATE() - 7 
    GROUP BY USERID, PROJECT
    HAVING MAX([NOTES.MODIFIEDDATE])

【讨论】:

  • 这是我一直在寻找的,但是它返回相同的列表,其中包含每条记录超过 7 天的所有日期。这里的想法是获取 7 天内未更新的每个项目的最新日期,以便我们可以发送一封自动电子邮件。有什么见解吗?
  • 您能否将数据样本添加到您的问题中
  • 按要求添加样品。
  • 您需要按 USERID、项目分组
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 2017-10-02
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
相关资源
最近更新 更多