在查询中添加两列的值

时间:2019-09-02 19:32:30

标签: sql ms-access

我有一个借方和一个贷方列。如果借方中有值,则贷方将为空白,反之亦然。我正在尝试计算借方净额列-贷方

我正在使用以下内容:

(总计:+ NZ([借方],0)-nz([贷方],0))

完整查询如下:

INSERT INTO T_RECON ( REFERENCE, RECDATE, NET_AMOUNT, PROPID )
SELECT REFERENCE, RECDATE, NET_AMOUNT, PROPID
FROM (SELECT REFERENCE, RECDATE, (Total:+NZ([debit],0)-nz([credit],0)), PROPID
  FROM LEDGER_1
  WHERE PERIOD = 13 AND LEDGER_ACCOUNT = '55971'
  UNION ALL
  SELECT REFERENCE, RECDATE, (Total:+NZ([debit],0)-nz([credit],0)), PROPID
  FROM LEDGER_2
  WHERE PERIOD = 13 AND LEDGER_ACCOUNT = '55971'
);

我希望仅在NET_AMOUNT字段中看到借方-贷方显示。但是,在上面我得到一个SYNTAX错误。当我排除代码的NET_AMOUNT部分时,我的查询工作正常

2 个答案:

答案 0 :(得分:1)

您混淆了Access的Design视图和SQL视图来分配计算列。 SQL列别名在表达式后需要AS运算符,而在表达式前不需要冒号分隔符。并且确保列别名与外层查询列名称相对应:

SELECT ... NZ([debit],0)-NZ([credit],0) AS NET_AMOUNT, ...

您可以在设计视图中使用冒号方法,它将在SQL视图中使用AS运算符进行翻译。在查询单元中放置以下内容:

NET_AMOUNT: NZ([debit],0)-NZ([credit],0)

答案 1 :(得分:1)

查看完整的错误消息会很有帮助。但是我认为您需要给子查询中的列和子查询本身命名:

INSERT INTO T_RECON ( REFERENCE, RECDATE, NET_AMOUNT, PROPID )
SELECT REFERENCE, RECDATE, NET_AMOUNT, PROPID
FROM (SELECT REFERENCE, RECDATE, (Total:+NZ([debit],0)-nz([credit],0)) AS NET_AMOUNT, PROPID
  FROM LEDGER_1
  WHERE PERIOD = 13 AND LEDGER_ACCOUNT = '55971'
  UNION ALL
  SELECT REFERENCE, RECDATE, (Total:+NZ([debit],0)-nz([credit],0)), PROPID
  FROM LEDGER_2
  WHERE PERIOD = 13 AND LEDGER_ACCOUNT = '55971'
) AS QRY;
相关问题