如何在Master-Details表中获取详细信息表的最后记录?
例如在Northwind数据库中我想获得每个OrderID
感谢
修改1)
我试试这个:
WITH NthRowCTE AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY od.OrderID,od.ProductID) AS RNum
,od.Quantity,od.OrderID, od.ProductID
FROM [Order Details] od
)
SELECT TOP 1 * FROM NthRowCTE GROUP BY RNum,Quantity,OrderID,ProductID ORDER BY RNum DESC
但我不知道如何将其与每个orderID连接
答案 0 :(得分:1)
您想要使用窗口函数的partition by
部分。这将在遇到新的OrderID时重置计数器并允许where rnum = 1
工作。
由于您需要每个订单的最后一个订单明细记录,因此您使用ORDER BY od.OrderDetailID DESC
来确保这一点。 (这假设有一个ID可以使用。可以是日期或行号)
WITH NthRowCTE AS
(
SELECT
ROW_NUMBER() OVER (Partition By od.OrderID ORDER BY od.OrderDetailID DESC ) AS RNum
,od.Quantity,od.OrderID, od.ProductID
FROM [Order Details] od
)
SELECT * FROM NthRowCTE
WHERE RNum = 1