我执行了以下查询:
SELECT ProductID, Quantity, Location
FROM DBLocations
ORDER BY ProductID, LocationDistanceIndex DESC;
之后,我一直在努力选择最多3个最近的仓库,每个仓库都有一个产品 - LocationDistanceIndex
列(也可能没有,1或2)。
如何编写查询以保留每个ProductID最多3条记录 - 具有最高LocationDistanceIndex的3条记录,因此按降序排列。
此外,如果有一种方法可以在MS Access中没有手动编写的查询来执行此类过滤,那么如果有人指出这一点,那将会很棒。
注意:我尝试使用Row_Number()Over Partition但MS Access似乎不支持。
答案 0 :(得分:1)
以下是MS Access的一种方法:
SELECT l.*
FROM DBLocations l
WHERE l.LocationDistanceIndex IN (SELECT TOP 3 l2.LocationDistanceIndex
FROM DBLocations l2
WHERE l.ProductID = l2.ProductID
ORDER BY l2.LocationDistanceIndex DESC
);