1

我有一个表格,其中包含“Money in Money Out”金额以及日期和客户 ID 的列表。

如果记录是资金流入,则该MIMO字段包含一个正数,如果资金流出,则该字段包含一个负数。

我想执行一个求和的查询,MIMO但要分别为两个日期之间的所有记录提供总金额和总金额。只有当金额大于 0 时,它才会通过求和来做到这一点,反之亦然。

我现在有这个,但我相信我的语法完全错误:

SELECT Sum(MIMO.MIMO) AS SumOfMIMO HAVING (((Sum(MIMO.MIMO))>0), Sum(MIMO.MIMO) AS SumOfMIMO1 HAVING ((Sum(MIMO.MIMO))<0), MIMO.AccountNum
FROM MIMO
GROUP BY MIMO.TransactionDate, MIMO.AccountNum
WHERE ((MIMO.TransactionDate) Between #12/1/2012# And #12/31/2012#) AND ((MIMO.AccountNum)="12345"));
4

2 回答 2

4

尝试IIF

SELECT  SUM(IIF(MIMO.MIMO >= 0,MIMO.MIMO,0)) AS MoneyIn,
        SUM(IIF(MIMO.MIMO < 0,MIMO.MIMO,0)) AS MoneyOut
FROM MIMO
WHERE ((MIMO.TransactionDate) Between #12/1/2012# And #12/31/2012#)) 
AND ((MIMO.AccountNum)="12345"));
于 2013-01-24T13:46:45.180 回答
1

您也可以使用 Pivot 进行计算:

TRANSFORM Sum(Mimo.Mimo) AS Expr1
SELECT AccountNum, TransactionDate
FROM Mimo
WHERE Sgn([Mimo])<>0 And TransactionDate Between #12/1/2012# And #12/31/2012#
GROUP BY AccountNum, TransactionDate
PIVOT Sgn([Mimo]);
于 2013-01-24T13:56:34.177 回答