Сложнее вернуть только самые последние данные в запросе MS

Я публикую этот вопрос. Я очистил SQL, но все еще есть несколько повторяющихся результатов. Мне нужно найти самые последние данные для каждого itemnum в каждом месте. Вот что у меня есть:

SELECT invbalances.itemnum, 
invbalances.curbal, 
inventory.maxlevel, 
inventory.minlevel2, 
inventory.sstock,
inventory.deliverytime, 
invbalances.location, 
inventory.category
FROM MX7PROD.dbo.invbalances invbalances, 
MX7PROD.dbo.inventory inventory
WHERE invbalances.itemnum = inventory.itemnum 
AND invbalances.location = inventory.location 
AND ((inventory.category<>'cstk' 
And inventory.category<>'nore' 
And inventory.category<>'sp') 
AND (invbalances.itemnum Not Like '%n%'))
ORDER BY invbalances.itemnum

1 ответ

Предполагая, что "самые последние данные" определяются по наибольшему ограниченному значению для каждого элемента itemnum в каждом месте, это должно сработать: (казалось, что вы пришли к такому выводу в последний раз, когда задавали этот вопрос)

SELECT invbalances.itemnum,
       invbalances.curbal,
       inventory.maxlevel,
       a_inventory52.minlevel,
       inventory.sstock,
       inventory.deliverytime,
       inventory.category,
       inventory.lastissuedate
  FROM MX7PROD.dbo.a_inventory52 a_inventory52,
       MX7PROD.dbo.invbalances   invbalances,
       MX7PROD.dbo.inventory     inventory
 WHERE invbalances.itemnum = inventory.itemnum
   AND a_inventory52.itemnum = invbalances.itemnum
   AND inventory.category <> 'cstk'
   And inventory.category <> 'nore'
   And inventory.category <> 'sp'
   and invbalances.itemnum not like '%n%'
   and invbalances.curbal =
       (SELECT MAX(x.curbal)
          FROM MX7PROD.dbo.inventory x
         where x.itemnum = invbalances.itemnum
           and x.location = invbalances.location)

Обратите внимание, что ваша группировка критериев в предложении where с использованием скобок не влияет на результат, потому что вы используете AND в каждой строке, поэтому я разгруппировал их.

Другие вопросы по тегам