1

「MoneyinMoneyOut」の金額と、日付およびクライアント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"));
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

ピボットを使用してこれを計算することもできます。

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 に答える