我有一个借方和一个贷方列。如果借方中有值,则贷方将为空白,反之亦然。我正在尝试计算借方净额列-贷方
我正在使用以下内容:
(总计:+ 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
部分时,我的查询工作正常
答案 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;