在SQL中查找运行总和(Access 07-10)
我正试图找到一个连续的总数。当我运行此程序时,每次帐户在两周内进行购买时,我都会得到一笔钱,而不是总数。我想回答的问题是,每个账户在头两周内的支出是多少在SQL中查找运行总和(Access 07-10),sql,ms-access,sum,subquery,cumulative-sum,Sql,Ms Access,Sum,Subquery,Cumulative Sum,我正试图找到一个连续的总数。当我运行此程序时,每次帐户在两周内进行购买时,我都会得到一笔钱,而不是总数。我想回答的问题是,每个账户在头两周内的支出是多少 SELECT dbo_AAS.Account, dbo_AM.ED, ([dbo_AM].[ED]+14) AS TwoWeeks, dbo_AAS.RD, Sum(Abs([dbo_AAS].[WA])) AS ABSWA FROM dbo_AAS INNER JOIN dbo_AM
SELECT
dbo_AAS.Account,
dbo_AM.ED,
([dbo_AM].[ED]+14) AS TwoWeeks,
dbo_AAS.RD,
Sum(Abs([dbo_AAS].[WA])) AS ABSWA
FROM dbo_AAS
INNER JOIN dbo_AM
ON dbo_AAS.Account = dbo_AM.Account
GROUP BY
dbo_AAS.Account,
dbo_AM.ED,
dbo_AAS.RD
HAVING ((
(dbo_AM.ED) Is Not Null)
AND ((dbo_AAS.RD) Between [dbo_AM].[ED] And [dbo_AM].[ED]+14));
结果是:
+-------+----------+----------+----------+-----+
|Account|ED |TwoWeeks |RD |ABSWA|
+-------+----------+----------+----------+-----+
|34 |11/23/2013|12/07/2013|11/23/2013|18 |
+-------+----------+----------+----------+-----+
|34 |11/23/2013|12/07/2013|11/27/2013|30 |
+-------+----------+----------+----------+-----+
|34 |11/23/2013|12/07/2013|12/02/2013|15 |
+-------+----------+----------+----------+-----+
|34 |11/23/2013|12/07/2013|12/05/2013|20 |
+-------+----------+----------+----------+-----+
预期结果
+-------+----------+----------+--+-----+
|Account|ED |TwoWeeks |RD|ABSWA|
+-------+----------+----------+--+-----+
|34 |11/23/2013|12/07/2013|* |83 |
+-------+----------+----------+--+-----+
您是按RD分组的,所以这将为RD中的每个值提供一行。将该字段从GROUPBY语句中去掉,您应该会得到答案。您还必须将其从SELECT语句中删除,否则它将向您抛出错误
SELECT dbo_AAS.Account,
dbo_AM.ED,
([dbo_AM].[ED]+14) AS TwoWeeks,
Sum(Abs([dbo_AAS].[WA])) AS ABSWA
FROM dbo_AAS
INNER JOIN dbo_AM
ON dbo_AAS.Account = dbo_AM.Account
WHERE dbo_AAS.RD BETWEEN '11/23/2013' AND '12/05/2013'
GROUP BY dbo_AAS.Account, dbo_AM.ED
HAVING (((dbo_AM.ED) Is Not Null) AND
((dbo_AAS.RD) Between [dbo_AM].[ED] And [dbo_AM].[ED]+14));
只需完全删除RD即可。一个子查询就成功了。谢谢你们的帮助 选择[%$@_别名].帐户,dbo_AM.FN,dbo_AM.LN,总和[%$@_别名].abswa为WA,dbo_AM.ED,[dbo_AM].[ED]+14为两周 从中选择dbo_AAS.Account、dbo_AM.ED、dbo_AAS.RD、SumAbs[dbo_AAS].[WS]作为ABSWA 从dbo_AAS内部连接dbo_AM ON dbo_AAS.Account=dbo_AM.Account 按dbo_AAS.Account、dbo_AM.ED、dbo_AAS.RD分组 在[dbo_AM].[ED]和[dbo_AM].[ED]+14之间有dbo_AAS.RD 作为[%$@\u别名]在[%$@\u别名]上的内部联接dbo\u AM。帐户=dbo\u AM.Account
按[%$@_别名]分组。帐户、dbo_AM.FN、dbo_AM.LN、dbo_AM.ED、[dbo_AM].[ED]+14 感谢您纠正我的错误。当我从组中删除RD时,我收到错误,您尝试执行的查询未将指定的表达式“RD”作为聚合函数的一部分。这就是为什么我说也从SELECT语句中删除它。删除RD时,结果ABSWA不限于两周的时间限制:当RD为已删除结果ABSWA不限于两周的时间限制:@user3120577只需在WHERE中添加条件和所需日期。