使用 MS Access SQL 2013 创建运行总计

Posted

技术标签:

【中文标题】使用 MS Access SQL 2013 创建运行总计【英文标题】:Creating a Running total using MS Access SQL 2013 【发布时间】:2015-07-29 00:07:38 【问题描述】:

我正在尝试使用 Access SQL 创建一个运行总计我已经编写了以下 SQL 语句,但它不起作用。我的 SQL 不好,我正在努力学习是否有人可以帮助我。如果我写完后能在设计视图中看到它也很好。

SELECT
    SubQrySUMPermCashIN.Date
    ,SubQrySUMPermCashIN.PayeeID
    ,SubQrySUMPermCashIN.PermCashIn
    ,SubQrySUMPermCashIN.Year
    ,Sum(tblTest.PermCashIn) AS RunningTotal
FROM
    SubQrySUMPermCashIN
INNER JOIN
    SubQrySUMPermCashIN AS tblTest
ON
    SubQrySUMPermCashIN.Date = tblTest.Date
WHERE
    ((SubQrySUMPermCashIN.Date)>=[tblTest]![Date])
GROUP BY
    SubQrySUMPermCashIN.Date
    ,SubQrySUMPermCashIN.PayeeID
    ,SubQrySUMPermCashIN.PermCashIn
    ,SubQrySUMPermCashIN.Year;

【问题讨论】:

“不工作”,是对问题的糟糕描述。您是否没有得到任何结果、错误或结果不是您所期望的?请编辑您的问题并添加无效的内容。 MS Access 2010 Running Total in Query 的可能重复项 【参考方案1】:

我倾向于使用相关子查询进行此类计算:

SELECT spc.Date, spc.PayeeID, spc.PermCashIn, spc.Year,
       (SELECT SUM(sp2.PerCashIn)
        FROM SubQrySUMPermCashIN as spc2
        WHERE spc2.Date <= sp.Date
       ) as RunningTotal
FROM SubQrySUMPermCashIN as spc;

这会同时保存join 和外部group by。请注意,表别名的使用还使查询更易于编写和阅读。

【讨论】:

【参考方案2】:

我无权对此进行测试,但请尝试以下代码:

SELECT
    SubQrySUMPermCashIN.Date
    ,SubQrySUMPermCashIN.PayeeID
    ,SubQrySUMPermCashIN.PermCashIn
    ,SubQrySUMPermCashIN.Year
    ,Sum(tblTest.PermCashIn) AS RunningTotal
FROM
    SubQrySUMPermCashIN
INNER JOIN
    SubQrySUMPermCashIN AS tblTest
ON
    SubQrySUMPermCashIN.Date >= tblTest.Date
GROUP BY
    SubQrySUMPermCashIN.Date
    ,SubQrySUMPermCashIN.PayeeID
    ,SubQrySUMPermCashIN.PermCashIn
    ,SubQrySUMPermCashIN.Year;

注意:您的 WHERE 与您的 JOIN ... ON ... 相矛盾;对其进行了修改,使ON 包含正确的定义,并且不再需要WHERE

【讨论】:

所以我正在创建一个相等和不相等的连接,我将连接更改为 ' SubQrySUMPermCashIN.Date >= tblTest.Date AND SubQrySUMPermCashIN.Year = tblTest.Year ' 所以我也可以按年份求和

以上是关于使用 MS Access SQL 2013 创建运行总计的主要内容,如果未能解决你的问题,请参考以下文章

VB6 / SQL“长文本”比较不正确(MS Access 2013)

创建表 JDBC-MS-ACCESS

使用 ODBC 连接到 MYSQL 在 MS-Access 中运行 SQL 时出错

在 MS access passthru 中创建 sql server 临时表

使用 SQL 向 MS Access 中的多个表添加列

从 MS Access 中提取数据并输出图表 [关闭]