SQL 服务器:从 MAX StockID 查询 ProductID 的 Return QtyLeft

SQL Server : Query Return QtyLeft from MAX StockID for ProductID

我试图找到给定 ProductIDQtyLeft 的值。但是,每个 ProductID 都有多个具有唯一 StockID 值的条目。我想要 QtyLeft,来自也具有最高值 StockID

ProductID

例如:

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

我想查询 return 上例中的值 13。

最终我想对 6 个 ProductID 执行此操作,以允许 QtyLeft 值显示在显示午餐菜单的监视器上。我希望 QtyLeft 值可供客户查看。

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

中的 1 个
SELECT 
    MAX(StockID) AS MaxBalance, 
    ProductID 
FROM 
    [DB].[dbo].[Inventory] 
GROUP BY 
    ProductID
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

您可以为此使用 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

感谢您的宝贵建议。我使用了下面的方法,只需在查询中添加 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'