我有一个查询,它对“注释”记录进行分区和排名,按 ID_Task 对它们进行分组(用户为每个任务添加注释)。我想按日期对笔记进行排名,但我也想限制它,以便它们在两个日期之间排名。
我正在使用 SQL Server 2008。到目前为止,我的 SELECT 看起来像这样:
SELECT Note.ID,
Note.ID_Task,
Note.[Days],
Note.[Date],
ROW_NUMBER() OVER (PARTITION BY ID_Task ORDER BY CAST([Date] AS DATE), Edited ASC) AS Rank
FROM
Note
WHERE
Note.Locked = 1 AND Note.Deleted = 0
现在,我假设如果我将 WHERE 子句放在底部,尽管它们仍然会有排名,但我可能会或可能不会获得排名为 1 的项目,因为它可能会被过滤掉。那么有没有办法我只能分区记录 WHERE ,而忽略所有其他记录?我猜我可以对子查询进行分区。
目的是使用排名号在另一个查询中查找每个任务的最新注释。所以在那个查询中,我将加入这个结果 WHERE rank = 1。