使用 SQL 在 Ms-access 查询中运行 Total

Posted

技术标签:

【中文标题】使用 SQL 在 Ms-access 查询中运行 Total【英文标题】:Running Total in Ms-access query using SQL 【发布时间】:2014-10-14 09:48:44 【问题描述】:

我想在我的一个访问查询中使用 SQL 计算运行总数(请不要使用 DSUM)。 我现有的查询中有 3 个字段,即 SubCategoryID、brand 和 Revenue,并且想计算每个 SubCategory 下的总收入。

我已经为它写了一个查询,但是有一些错误,我找不到纠正它的方法。

    SELECT   x.SubCategoryID
            ,x.brand
            ,x.[Avg Revenue]
              ( Select Sum(x2.[Avg Revenue]) 
                From FROM [BrandRevenue] x2
                Where x2.[SubCategoryID] = x.[SubCategoryID] AND x2.[Avg Revenue] <= x.[Avg Revenue]) As [Running Sum]
    FROM (Select SubCategoryID, brand, [Avg Revenue]
          FROM [BrandRevenue]
          Order BY SubCategoryID, [Avg Revenue] DESC) As x
    Group BY x.SubCategoryID, x.brand, x.[Avg Revenue];

感谢您的帮助:)

【问题讨论】:

愿意分享错误是什么? 查询表达式中的语法错误 'Select Sum(x2.[Avg Revenue]) From FROM [BrandRevenue(Weekly)] x2 Where x2.[SubCategoryID] = x.[SubCategoryID] AND x2.[Avg收入] 【参考方案1】:

您在相关子查询中重复了“发件人”:

  ( Select Sum(x2.[Avg Revenue]) 
    From FROM [BrandRevenue] x2
    ...

我认为您不需要 from 子句中的子查询或 GROUP BY。我认为这会更好,当然也更简单:

SELECT  x.SubCategoryID,
        x.brand,
        x.[Avg Revenue],
        (   SELECT  SUM(x2.[Avg Revenue]) 
            FROM    [BrandRevenue] x2
            WHERE   x2.[SubCategoryID] = x.[SubCategoryID] 
            AND     x2.[Avg Revenue] <= x.[Avg Revenue]
        ) AS [Running Sum]
FROM    BrandRevenue AS x
ORDER BY x.SubCategoryID, x.[Avg Revenue] DESC;

ADDENUM

我认为要解决品牌收入相同的问题,您需要在相关子查询中添加一些额外的逻辑:

SELECT  x.SubCategoryID,
        x.brand,
        x.[Avg Revenue],
        (   SELECT  SUM(x2.[Avg Revenue]) 
            FROM    [BrandRevenue] x2
            WHERE   x2.[SubCategoryID] = x.[SubCategoryID] 
            AND  (  x2.[Avg Revenue] <= x.[Avg Revenue]
                OR  (x2.[Avg Revenue] = x.[Avg Revenue] 
                AND x2.Brand <= x.Brand
                )
        ) AS [Running Sum]
FROM    BrandRevenue AS x
ORDER BY x.SubCategoryID, x.[Avg Revenue] DESC, x.Brand;

【讨论】:

虽然有一个问题,当两个品牌的收入相同时,结果并不像预期的那样。知道如何解决这个问题吗?谢谢 我已添加到答案中,希望能解决问题。

以上是关于使用 SQL 在 Ms-access 查询中运行 Total的主要内容,如果未能解决你的问题,请参考以下文章

编辑器中的 ms-access VBA 长 sql 查询字符串行拆分(内联双引号)

库存 SQL 查询出现歧义错误,其中两个字段应相等以进行计算。 MS-ACCESS

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

在 sql (MS-Access) 中编写分组查询

如何检索 MS-Access 中的最后一个自动增量值,例如 Sql Server 中的 @@Identity

如何使用sql语句和vba将数据从MS-Access导入excel power查询?