Загадка SQL, как выбрать последнюю дату для части, но только 1 строка на часть (уникальная)

Я пытаюсь обернуть голову этим утром.

Я пытаюсь показатьinventory статус для частей (для наших продуктов), и этот запрос становится сложным, только если я пытаюсь вернуть все части.

Позвольте мне выложить это:

один столinventoryReportУ меня есть отдельный список X частей, которые я хочу отобразить, в результате чего должно быть X # рядов (1 строка на деталь, показывающую последнюю запись инвентаря).таблица состоит из датированных записей изменений инвентаризации (поэтому мне нужно толькоLATEST запись даты на часть).все данные, содержащиеся в этой единственной таблице, поэтому не требуется никаких объединений.

В настоящее время для одной отдельной части это довольно просто, и я могу сделать это, выполнив следующий sql (чтобы дать вам некоторое представление):

SELECT     TOP (1) ldDate, ptProdLine, inPart, inSite, inAbc, ptUm, inQtyOh + inQtyNonet AS in_qty_oh, inQtyAvail, inQtyNonet, ldCustConsignQty, inSuppConsignQty
FROM         inventoryReport
WHERE     (ldPart = 'ABC123')
ORDER BY ldDate DESC

я получаю свой ТОП-1 ряд, такой простой для каждой части, однако мне нужно показать все X (скажем, 30 частей). Так что мне нужно 30 строк, с таким результатом. Конечно, простым решением было бы зациклить X # вызовов SQL в моем коде (но это было бы дорого), и этого было бы достаточно, но для этой цели я хотел бы еще немного поработать с этим SQL, чтобы уменьшить количество вызовов x # до БД. (если не нужно) до 1 запроса.

Из того, что я вижу здесь, мне нужно как-то отслеживать последнюю дату по каждому элементу при поиске набора результатов.

Я бы в конечном итоге сделать

WHERE ldPart in ('ABC123', 'BFD21', 'AA123', etc)

ограничить части, которые мне нужны. Надеюсь, я достаточно ясно изложил свой вопрос. Дайте мне знать, если у вас есть идея. Я не могу сделатьDISTINCT поскольку строки не совпадают, дата должна быть самой последней, и мне нужно максимум X строк.

Мысли? Я застрял...

Ответы на вопрос(3)

Ваш ответ на вопрос