2011-12-25 129 views
0

如何获取Master-Details表中最后一条记录的详细信息表?如何获取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 

但我不知道如何连接这个每个订单ID

+0

我第一次尝试使用ROW_NUMBER,但我没能answer.please帮我 – Arian 2011-12-25 06:13:29

+0

发表您尝试..... – 2011-12-25 06:14:02

+0

请参阅我的编辑1 – Arian 2011-12-25 06:22:50

回答

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 
+0

感谢它的工作。如果我没有'OrderDetailID'我如何排序并获得最后的记录? – Arian 2011-12-25 06:59:13

+0

只需按任何标识降序排序,作为最后一条记录 – 2011-12-25 07:17:14