我正在尝试为给定的ProductID
查找QtyLeft
的值。然而,每个ProductID
具有多个具有唯一StockID
值的条目。我想要QtyLeft
,来自同样具有最高值StockID
的ProductID
例如:
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'