我有一张产品库存表。问题是每次库存变化时,都会存储新值和新数量。示例:
ProductID | Quantity | LastUpdate
1 123 2019.01.01
2 234 2019.01.01
1 444 2019.01.02
2 222 2019.01.02
因此,我需要获取每个产品的最新库存更新并返回:
ProductID | Quantity
1 444
2 222
以下 SQL 有效,但速度很慢。
SELECT ProductID, Quantity
FROM (
SELECT ProductID, Quantity
FROM Stock
WHERE LastUpdate
IN (SELECT MAX(LastUpdate) FROM Stock GROUP BY ProductID)
)
由于查询速度很慢并且应该与另一个查询结合,我真的很想知道如何更好地完成这项工作。
还有别的办法吗?
最佳答案
使用解析函数。 row_number
可以在这种情况下使用。
SELECT ProductID, Quantity
FROM (SELECT ProductID, Quantity, row_number() over(partition by ProductID order by LstUpdte desc) as rnum
FROM Stock
) s
WHERE RNUM = 1
或用first_value
.
SELECT DISTINCT ProductID, FIRST_VALUE(Quantity) OVER(partition by ProductID order by LstUpdte desc) as quantuity
FROM Stock
关于sql - 获取按 ID 分组的最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208733/