Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中查找运行总和(Access 07-10)_Sql_Ms Access_Sum_Subquery_Cumulative Sum - Fatal编程技术网

在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中添加条件和所需日期。