如何在Master-Details表中获取详细信息表的最后一条记录

时间:2011-12-25 06:08:55

标签: sql sql-server sql-server-2008

如何在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连接

1 个答案:

答案 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
相关问题