使用 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)
使用 ODBC 连接到 MYSQL 在 MS-Access 中运行 SQL 时出错