如何通过参数 (SQL) 查找最后一项?

How to find last item by parameter (SQL)?

我有一个查询要在历史记录中搜索一些项目。例如:

SELECT * FROM HISTORY WHERE DOCUMENT IN ('DOC1','DOC2','DOC3') ORDER BY DOC ASC, CREATION_DATE DESC;

这个查询 return 我是这样的列表:

ID | DOC | CREATIONDATE

6  | DOC1 | 12/12/2022

3  | DOC1 | 11/11/2022

5  | DOC2 | 12/12/2022

2  | DOC2 | 11/11/2022

4  | DOC3 | 12/12/2022

1  | DOC3 | 11/11/2022

但我只想要文档的最新项目。例如:

ID | DOC | CREATIONDATE

6  | DOC1 | 12/12/2022

5  | DOC2 | 12/12/2022

4  | DOC3 | 12/12/2022

我不想要旧的物品。只是文档插入的最后一项。有人可以帮助我吗?

一个选项是按 creation_date 降序排列,然后选择第一个。

  SELECT id, doc, creation_date
    FROM (SELECT id,
                 doc,
                 creation_date,
                 RANK () OVER (PARTITION BY doc ORDER BY creation_date DESC) rnk
            FROM history
           WHERE document IN ('DOC1', 'DOC2', 'DOC3'))
   WHERE rnk = 1
ORDER BY doc