首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于MS Access中的SQL查询中的同一字段,SUMIF两次

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

Stack Overflow用户
提问于 2013-01-24 21:38:15
回答 2查看 2.6K关注 0票数 1

我有一个表,其中包含“钱入钱出”金额的列表以及日期和客户ID。

如果记录是钱入,则MIMO字段包含正数;如果钱出,则包含负数。

我想执行一个对MIMO求和的查询,但是要分别给出两个日期之间所有记录的总金额和总金额。只有在金额大于0的情况下,它才会通过求和来实现这一点,反之亦然。

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

代码语言:javascript
复制
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"));
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-24 21:46:45

试试IIF

代码语言:javascript
复制
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"));
票数 4
EN

Stack Overflow用户

发布于 2013-01-24 21:56:34

您也可以使用Pivot来计算:

代码语言:javascript
复制
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]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14502695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档