Сложнее вернуть только самые последние данные в запросе 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 в каждой строке, поэтому я разгруппировал их.