我有一个表,其中包含“钱入钱出”金额的列表以及日期和客户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"));发布于 2013-01-24 21:46:45
试试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-24 21:56:34
您也可以使用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]);https://stackoverflow.com/questions/14502695
复制相似问题