如何获取包含所有列的最新行

时间:2015-07-19 13:23:21

标签: sql sql-server

当我们使用group by某些列信息丢失时,我正在寻找一个查询,以便在获取最新数据时返回表的所有列。 例如,对于以下源数据,预期结果是最新日期的所有项目数量。

Data:
    Item    Quantity    Date
    Apple   7           7/17/2015
    Ball    15          7/17/2015
    Cat     10          7/17/2015
    Dog     8           7/19/2015
    Ball    1           7/19/2015



Desired Result:
    Item    Quantity    Date
    Apple   7           7/17/2015
    Ball    1           7/19/2015
    Cat     10          7/17/2015
    Dog     8           7/19/2015

如果我们使用group,我们会松开Quantity,因为它既不是分组也不是聚合。

此表没有id键,因此无法使用子查询。

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()

select item, quantity, date
from (select t.*,
             row_number() over (partition by item order by date desc) as seqnum
      from t
     ) t
where seqnum = 1;