Sql 数据比较查询

Sql 数据比较查询,sql,ms-access,Sql,Ms Access,我正在为我们的会计部门做一个项目,我被下面的问题困住了。我们在MSAccess数据库中有两个表,其中包含税务数据。我们每月都会收到一份包含新税务信息的文件。数据更改的唯一时间是进行税务更新时,但不包括政府实体。因此,在任何一个月,我们都可以有5个或5000个变化 下面查询的目标是将新数据与上个月的数据进行比较(在两个单独的表中)。然而,我被提示输入标准,我不知道为什么。理想情况下,查询将运行并返回两个表之间的任何差异 SELECT newtax.[zipcode], newtax.

我正在为我们的会计部门做一个项目,我被下面的问题困住了。我们在MSAccess数据库中有两个表,其中包含税务数据。我们每月都会收到一份包含新税务信息的文件。数据更改的唯一时间是进行税务更新时,但不包括政府实体。因此,在任何一个月,我们都可以有5个或5000个变化

下面查询的目标是将新数据与上个月的数据进行比较(在两个单独的表中)。然而,我被提示输入标准,我不知道为什么。理想情况下,查询将运行并返回两个表之间的任何差异

SELECT newtax.[zipcode],
       newtax.city,
       newtax.county,
       newtax.state,
       newtax!combinedsalestax - oldtax!combinedsalestax AS Change,
       newtax.combinedsalestax,
       oldtax.combinedsalestax
FROM   oldtax
       INNER JOIN newtax
               ON ( oldtax.[zipcode] = newtax.[zipcode] )
                  AND ( oldtax.city = newtax.city )
                  AND ( oldtax.county = newtax.county )
WHERE  (( ( [newtax]![combinedsalestax] - [oldtax]![combinedsalestax] ) <> 0)); 
选择newtax.[zipcode],
纽塔克斯市,
纽塔克斯县,
纽塔克斯州,
纽塔克斯!合并销售税-旧税!合并销售税作为变更,
新税。合并销售税,
合并销售税
从旧税
内联接新轴
ON(oldtax.[zipcode]=newtax.[zipcode])
和(oldtax.city=newtax.city)
和(oldtax.county=newtax.county)
其中((([newtax]![combinedsalestax]-[oldtax]![combinedsalestax])0);

我也愿意接受关于如何完全修改此查询的建议,因为我假设有更好的方法。提前谢谢

您应该去掉感叹号,它们用于控件,而不是字段。检查null(Nz)可能是个好主意

SELECT newtax.[zipcode],
       newtax.city,
       newtax.county,
       newtax.state,
       newtax.combinedsalestax - oldtax.combinedsalestax AS Change,
       newtax.combinedsalestax,
       oldtax.combinedsalestax
FROM   oldtax
       INNER JOIN newtax
               ON ( oldtax.[zipcode] = newtax.[zipcode] )
                  AND ( oldtax.city = newtax.city )
                  AND ( oldtax.county = newtax.county )
WHERE  Nz(newtax.combinedsalestax,0) <> Nz(oldtax.combinedsalestax,0) 
选择newtax.[zipcode],
纽塔克斯市,
纽塔克斯县,
纽塔克斯州,
newtax.combinedsalestax-oldtax.combinedsalestax作为更改,
新税。合并销售税,
合并销售税
从旧税
内联接新轴
ON(oldtax.[zipcode]=newtax.[zipcode])
和(oldtax.city=newtax.city)
和(oldtax.county=newtax.county)
其中Nz(新税合并销售税,0)Nz(旧税合并销售税,0)

如果仍然提示您输入参数,则可能是字段名拼写错误。

确实是字段名中的空格导致了提示。谢谢你的建议。我已经像你一样尝试了这个查询,奇怪的是我没有返回任何结果。我知道数据集是不同的,因为出于测试目的,我手动更改了一些数据集。我做了另一个小更改,但我基本上复制了您的查询。你有没有原始的退货记录,因为我看不出其中一个是如何工作的,而另一个是如何不工作的。从理论上讲,我所做的更改应该会产生更多的差异,而不是更少。我相信问题不在于最初的查询。基本上,这都是因为我们的导入规范文件丢失而生成的。因此,必须创建一个新的。access DB仍然是2000格式,新的规范文件是在2010年创建的。我将所有数据导出到一个2010 DB中,它工作得非常好。不知道为什么…但这解决了问题。编辑:谢谢你的帮助,我还没有改变查询,因为它开始工作,但给你最好的答案无论如何!我很高兴你把它整理好了。