获取每个 Group By SQL 的最新记录

Ham*_*teu 3 sql sql-server select sql-server-2008-r2 groupwise-maximum

我有下表:

-----------------------------------------------------------
ID     oDate         oName     oItem    oQty    oRemarks
-----------------------------------------------------------
1      2016-01-01    A         001      2       
2      2016-01-01    A         002      1       test
3      2016-01-01    B         001      3  
4      2016-01-02    B         001      2
5      2016-01-02    C         001      2
6      2016-01-03    B         002      1
7      2016-01-03    B         001      4
       ff.
Run Code Online (Sandbox Code Playgroud)

我想获得每个名字的最新记录。所以结果应该是这样的:

-----------------------------------------------------------
oDate         oName     oItem    oQty    oRemarks
-----------------------------------------------------------
2016-01-01    A         001      2       
2016-01-01    A         002      1       test
2016-01-02    C         001      2
2016-01-03    B         002      1
2016-01-03    B         001      4
ff.
Run Code Online (Sandbox Code Playgroud)

有谁知道如何得到这个结果?

Mur*_*nik 6

rank窗口子句允许你,好了,根据一些分区排名行,然后你可以只选择顶部的:

SELECT oDate, oName, oItem, oQty, oRemarks
FROM   (SELECT oDate, oName, oItem, oQty, oRemarks,
               RANK() OVER (PARTITION BY oName ORDER BY oDate DESC) AS rk
        FROM   my_table) t
WHERE  rk = 1
Run Code Online (Sandbox Code Playgroud)