Макс () не отфильтровывает МИН () - PullRequest
0 голосов
/ 29 июня 2018

, когда я использую запрос, приведенный ниже, он возвращает дубликаты StockNo's, потому что некоторые из них имеют дубликаты кодов WorkInProgress (FiWipStatus Code). Есть ли способ исключить запись, основанную на MIN () на rowlastupdated? как всегда, ценю любую помощь!

SELECT     dbo.InventoryVehicle.StockNo, dbo.VehicleSales.FiWipStatusCode, 
MAX(dbo.VehicleSales.RowLastUpdated) AS Expr1
FROM         dbo.VehicleSales RIGHT OUTER JOIN
dbo.InventoryVehicle ON dbo.VehicleSales.StockNo = dbo.InventoryVehicle.StockNo
GROUP BY dbo.InventoryVehicle.StockNo, dbo.VehicleSales.FiWipStatusCode, 
dbo.VehicleSales.RowLastUpdated

1 Ответ

0 голосов
/ 29 июня 2018

Если я правильно понял, вам нужно получить записи, основываясь на их дате и времени последнего обновления (RowLastUpdated). если это так, вы можете сделать что-то вроде этого:

SELECT 
    iv.StockNo
,   vs.FiWipStatusCode
,   vs.RowLastUpdated 
FROM (
SELECT     
    iv.StockNo
,   vs.FiWipStatusCode
,   vs.RowLastUpdated 
,   ROW_NUMBER() OVER(PARTITION BY iv.StockNo ORDER BY vs.RowLastUpdated DESC) AS RN
FROM         
    VehicleSales vs
LEFT JOIN  InventoryVehicle iv ON vs.StockNo = iv.StockNo   
) D 
WHERE 
    RN = 1

где ROW_NUMBER () будет нумеровать строки на основе StockNo и упорядочивать их на основе RowLastUpdated в DESC. Итак, первая строка каждого отдельного StockNo будет датой и временем MAX () в вашем запросе агрегации. если вы хотите получить MIN (), просто измените порядок на ASC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...