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

标签 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.
我想获取每个名称的最新记录。所以结果应该是这样的:
-----------------------------------------------------------
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.
有谁知道如何得到这个结果?

最佳答案

rank window 子句允许您根据某些分区对行进行排名,然后您可以只选择顶部的行:

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

关于sql - 获取每个 Group By SQL 的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35219261/

相关文章:

sql - 无法在 Postgres 交叉表查询中使用公用表表达式

sql - 查询当前表时,Postgresql 插入触发器变慢

sql - 当参数没有值时,如何将表中的所有值传递到ssrs中?

sql-server - 执行插入时的索引性能

javascript - 用图像替换复选框并更新 onClick(可能是 jQuery?)

sql - 查找表中的最小和最大数据列

sql-server - Microsoft SQL Server 2008 Management Studio 中的备用枚举数据类型是什么?

sql-server - 将 SQL 查询拆分为嵌套查询(子查询)

javascript - 无法使用 jQuery 覆盖 Select2 值

具有多个连接的 mysql SELECT 查询需要最新的表数据