Sql 在MS查询中仅返回最新数据更困难
我正在重新提出这个问题。我已经清理了SQL,但是仍然有一些重复的结果。我需要查找每个位置中每个itemnum的最新数据。以下是我所拥有的:Sql 在MS查询中仅返回最新数据更困难,sql,database,duplicate-removal,ms-query,Sql,Database,Duplicate Removal,Ms Query,我正在重新提出这个问题。我已经清理了SQL,但是仍然有一些重复的结果。我需要查找每个位置中每个itemnum的最新数据。以下是我所拥有的: SELECT invbalances.itemnum, invbalances.curbal, inventory.maxlevel, inventory.minlevel2, inventory.sstock, inventory.deliverytime, invbalances.location, inventory.category FR
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
假设最近的数据是由每个位置的每个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,所以我将它们取消分组。不幸的是,max curbal并不总是实际值。感谢您对括号的帮助。什么决定了最新的数据?你还没有说什么字段决定了什么是最新的。我似乎找不到一个字段来决定最新的数据。我使用的lastissuedate字段被普遍应用于每个条目,所以这不好。我将不得不搜索与数据库创建无关的其他表,以找到唯一标识符。非常感谢你的帮助。好吧,这可能不止一个领域。例如,如果最新数据是每个位置每个项目的最高限价,但在该逻辑之上,即限价为最大值的每一行的最后发布日期,则可以不说是这样,但可能不是这样。如果您给出一些数据行的示例,并指出结果中实际需要的行是最新的,我们可能会提供更好的帮助。在您解释最新数据行的逻辑构成之前,没有人能够回答这个问题。换句话说,对于每个位置的每个itemnum,X的最大值。不幸的是,只有你知道X是什么。