0

我正在为我们的会计部门开展一个项目,但我遇到了以下查询。我们在 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)); 

我也愿意就如何完全修改此查询提出建议,因为我假设有更好的方法。提前致谢!

4

1 回答 1

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) 

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

于 2013-02-01T22:44:05.103 回答