SQL 服务器:从 MAX StockID 查询 ProductID 的 Return QtyLeft
SQL Server : Query Return QtyLeft from MAX StockID for ProductID
我试图找到给定 ProductID
的 QtyLeft
的值。但是,每个 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'
我试图找到给定 ProductID
的 QtyLeft
的值。但是,每个 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
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'