对于MS Access中的SQL查询中的相同字段,SUMIF两次

时间:2013-01-24 13:38:15

标签: sql ms-access

我有一个表格,其中包含“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"));

2 个答案:

答案 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]);
相关问题