SQL Server:查询从ProductID的MAX StockID返回QtyLeft



我正在尝试为给定的ProductID查找QtyLeft的值。然而,每个ProductID具有多个具有唯一StockID值的条目。我想要QtyLeft,来自同样具有最高值StockIDProductID

例如:

ProductID   StockID   QtyLeft
-----------------------------
135        4564       4
135        3456       7
135        4958      12
135        8848      13

我希望查询返回上面示例中的值13。

实际上,我想为6个ProductID这样做,以允许QtyLeft值显示在显示午餐菜单的监视器上。我想让客户看到QtyLeft的价值。

以下查询显示具有最高StockID的产品ID。然而,我似乎无法在Qtyleft中工作,然后也只能搜索6个ProductIDs 中的1个

SELECT 
MAX(StockID) AS MaxBalance, 
ProductID 
FROM 
[DB].[dbo].[Inventory] 
GROUP BY 
ProductID

您可以使用ROW_NUMBER进行以下操作:

SELECT
ProductID, StockID, QtyLeft
FROM (
SELECT
*,
RN = ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY StockID DESC)
FROM Inventory
)AS t
WHERE RN = 1
WITH CTE AS
( SELECT ProductID,QtyLeft,ROW_NUMBER() 
OVER(PARTITION BY ProductID ORDER BY StockID Desc) rn 
FROM tab)
SELECT ProductID,QtyLeft from CTE WHERE rn = 1

感谢您的建议。我使用了下面的方法,只是在查询中添加了AND",以显示任何一个特别想要的结果。

WITH CTE AS
( SELECT ProductID,QtyLeft,ROW_NUMBER() 
OVER(PARTITION BY ProductID ORDER BY StockID Desc) rn 
FROM tab)
SELECT ProductID,QtyLeft from CTE WHERE rn = 1 AND ProductID = '135'

最新更新