SQL嵌套查询,最大值,分组
我的表(名为Inventory)如下所示:SQL嵌套查询,最大值,分组,sql,ms-access,Sql,Ms Access,我的表(名为Inventory)如下所示: SELECT InventoryType, LocationID, InventoryLevel, SafetyStock, MaxLevel, ModifiedAt FROM Inventory WHERE LocationID = 2 AND ModifiedAt IN (SELECT TOP 1 ModifiedAt FROM Inventory WHERE LocationID = 2
SELECT InventoryType, LocationID, InventoryLevel,
SafetyStock, MaxLevel, ModifiedAt
FROM Inventory
WHERE LocationID = 2 AND ModifiedAt IN
(SELECT TOP 1 ModifiedAt
FROM Inventory
WHERE LocationID = 2
ORDER BY ModifiedAt DESC);
InventoryType、LocationID、InventoryLevel、SafetyStock、MaxLevel、ModifiedAt
擦除器,1,14,3,15,11-2014
擦除器,2,4,10,50,10-2014
擦除器,2,5,10,50,11-2014
铅笔,1,10,5,45,11-2014
铅笔,2,23,15,50,11-2014
Pens,1,9,10,50,11-2014
Pens,2,55,10,50,12-2014
有三个主键:InventoryType、LocationID和ModifiedAt
给定指定的LocationID,我希望查询返回每个不同InventoryType的all,其中返回的每个元组的日期是具有指定LocationID的给定库存类型的记录中最近的ModifiedAt日期。例如,LocationID=2将返回:
InventoryType、LocationID、InventoryLevel、SafetyStock、MaxLevel、ModifiedAt
擦除器,2,5,10,50,11-2014
铅笔,2,23,15,50,11-2014
Pens,2,55,10,50,12-2014
我迄今为止的努力如下:
SELECT InventoryType, LocationID, InventoryLevel,
SafetyStock, MaxLevel, ModifiedAt
FROM Inventory
WHERE LocationID = 2 AND ModifiedAt IN
(SELECT TOP 1 ModifiedAt
FROM Inventory
WHERE LocationID = 2
ORDER BY ModifiedAt DESC);
我的查询返回:
InventoryType,LocationID,InventoryLevel,SafetyStock,MaxLevel,ModifiedAt
Pens,2,55,10,50,12-2014
任何帮助都将不胜感激。您需要一个相关的子查询。请尝试以下方法:
SELECT InventoryType, LocationID, InventoryLevel, SafetyStock, MaxLevel, ModifiedAt
FROM Inventory as i
WHERE LocationID = 2 AND
ModifiedAt IN (SELECT TOP 1 i2.ModifiedAt
FROM Inventory as i2
WHERE i2.LocationID = 2 AND i2.InventoryType = i.InventoryType
ORDER BY i2.ModifiedAt DESC
);
使用
SELECT DISTINCT
选择DISTINCTInventoryType
SELECT DISTINCT InventoryType, LocationID,
InventoryLevel, SafetyStock, MaxLevel, ModifiedAt
FROM Inventory
WHERE LocationID = 2
AND ModifiedAt IN
(SELECT TOP 1 ModifiedAt FROM Inventory WHERE LocationID = 2 ORDER BY ModifiedAt DESC)
我糟糕的,出于某种原因被转录成MonthYear。无论如何,这似乎正是我所需要的。非常感谢。