Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在MS查询中仅返回最新数据更困难_Sql_Database_Duplicate Removal_Ms Query - Fatal编程技术网

Sql 在MS查询中仅返回最新数据更困难

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

我正在重新提出这个问题。我已经清理了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

假设最近的数据是由每个位置的每个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是什么。