当我们使用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键,因此无法使用子查询。
答案 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;