SQL-切勿选择其他ID按日期排序的记录

Zyx*_*Sun 3 sql sql-server

因此,我只想按日期对结果中的每个ID选择仅前1条记录,这样就不会再有另一个ID相同的记录了。

这是更详细的示例:日期格式为 YYYY-MM-DD

+----------+-------+-------------+
| Id       | name  | date        |
+----------+-------+-------------+
| 1        | a     | 2019-01-01  |
| 1        | a2    | 2019-01-02  |
| 2        | b     | 2019-01-01  |
| 3        | c     | 2019-01-02  |
| 3        | c2    | 2019-01-01  |
| 4        | d     | 2019-01-01  |
+----------+-------+-------------+
Run Code Online (Sandbox Code Playgroud)

我想要的结果是这样的:

+----------+-------+-------------+
| Id       | name  | date        |
+----------+-------+-------------+
| 1        | a2    | 2019-01-02  |
| 2        | b     | 2019-01-01  |
| 3        | c     | 2019-01-02  |
| 4        | d     | 2019-01-01  |
+----------+-------+-------------+
Run Code Online (Sandbox Code Playgroud)

所以我只想获得一条记录,ID这是最新记录。

如何在SQL中实现呢?

感谢您的帮助!

Squ*_*rel 5

利用desc row_number()进行分区Id和排序date

select *
from   (
          select *, rn = row_number() over (partition by [Id] order by [date] desc)
          from   yourtable
       ) d
where  d.rn = 1
Run Code Online (Sandbox Code Playgroud)