我有一个表格,其中包含“Money in Money Out”金额以及日期和客户ID。
MIMO
字段包含正数(如果记录为金钱)和负数(如果有钱)。
我想执行一个总结MIMO
的查询,但是要为2个日期之间的所有记录分别提供总金额和资金。只有当金额为> 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"));
答案 0 :(得分: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"));
答案 1 :(得分: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]);