来自不同表中两列的SQL SUM值不正确

时间:2018-09-07 17:54:41

标签: sql ms-access

此MS Access SQL查询未返回正确的值。我正在尝试对表单上输入的两个日期之间的TransactionBuy和TransactionSell表的佣金求和。但是,结果不正确。

SELECT (Sum([TransactionBuy].[Commission])+Sum([TransactionSell].[Commission])) AS Total
FROM TransactionBuy, TransactionSell
WHERE (TransactionBuy.DateTime Between Forms![AT - frmCommission]![txtStart]
And  Forms![AT - frmCommission]![txtEnd]) 
AND (TransactionSell.DateTime Between Forms! [AT - frmCommission]![txtStart] 
And  Forms![AT - frmCommission]![txtEnd]);

2 个答案:

答案 0 :(得分:0)

这更有意义。 Access接受了吗?

SELECT SUM(Commission) as Total
FROM (
SELECT [TransactionBuy].[Commission])
FROM TransactionBuy, 
WHERE (TransactionBuy.DateTime Between Forms![AT - frmCommission]![txtStart]
And  Forms![AT - frmCommission]![txtEnd]) 

UNION ALL

SELECT [TransactionSell].[Commission]
FROM TransactionSell
WHERE (TransactionSell.DateTime Between Forms! [AT - frmCommission]![txtStart] 
And  Forms![AT - frmCommission]![txtEnd])
)

答案 1 :(得分:0)

在进行JOIN之前尝试汇总:

SELECT ts.Commission + tb..[Commission] AS Total
FROM (SELECT Sum([TransactionBuy].[Commission]) as commission
      FROM TransactionBuy
      WHERE TransactionBuy.DateTime Between Forms![AT - frmCommission]![txtStart] And  Forms![AT - frmCommission]![txtEnd]
     ) as tb,
     (SELECT Sum([TransactionSell].[Commission]) as commission
      FROM TransactionSell
      WHERE TransactionSell.DateTime Between Forms! [AT - frmCommission]![txtStart] And  Forms![AT - frmCommission]![txtEnd]
    ) ts;