Как получить последнюю запись таблицы данных в таблицах Master-Details - PullRequest
0 голосов
/ 25 декабря 2011

Как я могу получить последнюю запись таблицы данных в таблицах 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 Ответ

1 голос
/ 25 декабря 2011

Вы хотите использовать partition by часть оконной функции. Это сбрасывает счетчик при обнаружении нового OrderID и позволяет where rnum = 1 работать.

Так как вы хотите, чтобы последний подробный отчет о заказе для каждого заказа, вы используете ORDER BY od.OrderDetailID DESC, чтобы гарантировать это. (предполагается, что есть идентификатор для использования. Это может быть дата или номер строки)

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...